# Business Logic — JBSbatKKMiStcKikiCncl.executePcrsPplanChgChk() [374 LOC]

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

## 1. Role

### JBSbatKKMiStcKikiCncl.executePcrsPplanChgChk()

This method performs the **price course / price plan change availability determination** for a service contract in the context of a cancellation/batch operation. It determines whether a customer's current service contract (specifically, FTTH HD Course "A39" or eo Light TV Resend Multi-Channel HD Course "A64") is eligible to have its pricing structure changed. The method implements a three-stage eligibility gate: (1) it first checks the service contract detail table for any overriding restrictions; (2) it verifies the service contract record itself and classifies the property type; and (3) depending on the pricing course, it either registers a new service contract with updated pricing (HD Course -> PA3701, or eo TV HD Course -> resends with modified pricing) or takes no action.

The method handles **two service types**: the FTTH HD Course (PCRS_CD_COSE_HD = "A39") and the eo Light TV Resend Multi-Channel HD Course (PCRS_CD_EOH_TV_SAISO_TACH_HD = "A64"). For HD Course, it registers a new service contract with a fallback price plan of PA3701. For eo TV HD Course, it performs additional V-ONU equipment verification to determine whether the pricing should use the standard resend code "A23" or the BS-compatible resend code "A75".

The method uses a **routing/dispatch design pattern** — it branches based on pricing course codes and property types, calling different downstream service methods (`insertSvcKeiHd` vs `insertSvcKei` + `insertSvcKeiTv`). It acts as a **shared utility service method** called by the batch entry point `executeStbDsl()`, and its `chgFlg` result determines whether downstream registration processing proceeds.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["executePcrsPplanChgChk"])
    INIT["Initialize: chgFlg=false, pcrsCd empty, pplanCd empty, geneAddDtm empty, svcKei_map=new, ucwkMap_062=null"]

    INIT --> UCWK_QUERY["Execute executeKK_T_SVC_KEI_UCWK_KK_SELECT_062"]
    UCWK_QUERY --> UCWK_NEXT["ucwkMap_062 = db_KK_T_SVC_KEI_UCWK_062.selectNext()"]

    UCWK_NEXT --> UCWK_CHK{ucwkMap_062 == null?}
    UCWK_CHK -- true --> UCWK_NONE["Log: No service contract detail = change possible"]
    UCWK_NONE --> SET_CHG_TRUE["chgFlg = true"]
    UCWK_CHK -- false --> UCWK_EXISTS["Log: Service contract detail exists = change not allowed"]
    UCWK_EXISTS --> SET_CHG_FALSE_1["chgFlg = false"]

    SET_CHG_TRUE --> CHG_CHECK{chgFlg == true?}
    SET_CHG_FALSE_1 --> CHG_CHECK
    CHG_CHECK -- false --> END_NODE(["End: No action taken"])

    CHG_CHECK -- true --> SVC_145["Execute executeKK_T_SVC_KEI_KK_SELECT_145"]
    SVC_145 --> SVC_145_NEXT["svcKeiMap_145 = db_KK_T_SVC_KEI_145.selectNext()"]

    SVC_145_NEXT --> SVC_145_CHK{svcKeiMap_145 == null?}
    SVC_145_CHK -- true --> SVC_145_ERR["Throw: EKKB0210CE - KK_T_SVC_KEI not found"]
    SVC_145_CHK -- false --> EXTRACT["Extract: pcrsCd, pplanCd, geneAddDtm from svcKeiMap_145"]

    EXTRACT --> DEBUG_LOG_1["Log: Pricing course, plan, geneAddDtm values"]
    DEBUG_LOG_1 --> COURSE_CHK{PCRS_CD==A39 and PPLAN_CD==PA3901 OR PCRS_CD==A64 and PPLAN_CD==PA6401}
    SVC_145_ERR --> SVC_145_ERR_END(["End: Error thrown"])

    COURSE_CHK -- true --> PK_SELECT["Execute executeKK_T_SVC_KEI_PKSELECT"]
    PK_SELECT --> PK_CHK{svcKei_map == null?}
    PK_CHK -- true --> PK_ERR["Throw: EKKB0210CE - Service contract not found"]
    PK_CHK -- false --> HOSHIKI["hoshikiKeiNo = svcKei_map.getString(TK_HOSHIKI_KEI_NO)"]

    PK_ERR --> PK_ERR_END(["End: Error thrown"])
    HOSHIKI --> HOSHIKI_CHK{hoshikiKeiNo is empty?}

    HOSHIKI_CHK -- true --> HOME_TYPE["Log: No delivery contract = Home Type = change possible"]
    HOME_TYPE --> SET_CHG_TRUE_2["chgFlg = true"]
    HOSHIKI_CHK -- false --> MANSION_QUERY["Execute executeKK_T_SVC_KEI_KK_SELECT_146"]

    SET_CHG_TRUE_2 --> CHG_FINAL_1["chgFlg = true"]
    MANSION_QUERY --> MANSION_NEXT["svcKeiMap_146 = db_KK_T_SVC_KEI_146.selectNext()"]

    MANSION_NEXT --> MANSION_CHK{svcKeiMap_146 == null?}
    MANSION_CHK -- true --> MANSION_ERR["Throw: EKKB0210CE - KK_T_SVC_KEI not found"]
    MANSION_CHK -- false --> EXTRACT_146["Extract: hoshikiKeiNo_146, mansionBukkenCd"]

    MANSION_ERR --> MANSION_ERR_END(["End: Error thrown"])
    EXTRACT_146 --> MANSION_TYPE_CHK{mansionBukkenCd == 001?}

    MANSION_TYPE_CHK -- true --> MANSION_REJECT["Log: Mansion property = change not allowed"]
    MANSION_REJECT --> SET_CHG_FALSE_2["chgFlg = false"]
    MANSION_TYPE_CHK -- false --> MAISON_CHK{mansionBukkenCd == 002?}

    SET_CHG_FALSE_2 --> CHG_FINAL_2["chgFlg = false"]
    MAISON_CHK -- true --> MAISON_ALLOW["Log: Maison property = change possible"]
    MAISON_ALLOW --> SET_CHG_TRUE_3["chgFlg = true"]
    MAISON_CHK -- false --> DEFAULT_REJECT["Log: Other type = change not allowed"]
    DEFAULT_REJECT --> SET_CHG_FALSE_3["chgFlg = false"]

    SET_CHG_TRUE_3 --> CHG_FINAL_1
    SET_CHG_FALSE_3 --> CHG_FINAL_2
    CHG_FINAL_1 --> FINAL_CHG_CHK{chgFlg == true?}
    CHG_FINAL_2 --> FINAL_CHG_CHK

    FINAL_CHG_CHK -- false --> END_NODE
    FINAL_CHG_CHK -- true --> HD_BRANCH{PCRS_CD == A39?}

    HD_BRANCH -- true --> INSERT_HD["Execute insertSvcKeiHd"]
    INSERT_HD --> NEW_PLAN["newPplanCd = PA3701"]
    NEW_PLAN --> SET_DATA["setMiStcKikiCnclTgDataSvckei(miStcKikiCnclTgOutSvcKeimap, svcKei_map, A39, PA3701)"]
    SET_DATA --> SET_OUT["miStcKikiCnclTgOutSvcKeimap.setOutFlg(true)"]
    SET_OUT --> ADD_OUT["outputBean.addOutMapList_2(miStcKikiCnclTgOutSvcKeimap)"]
    ADD_OUT --> HD_END(["End: HD Course path"])

    HD_BRANCH -- false --> TV_BRANCH{PCRS_CD == A64?}
    TV_BRANCH -- false --> END_NODE

    TV_BRANCH -- true --> TV_SELECT_003["Execute executeKK_T_SVC_KEI_EOH_TV_KK_SELECT_003"]
    TV_SELECT_003 --> TV_003_NEXT["svcKeiTvMap_003 = db_KK_T_SVC_KEI_EOH_TV_003.selectNext()"]

    TV_003_NEXT --> TV_003_CHK{svcKeiTvMap_003 == null?}
    TV_003_CHK -- true --> TV_003_ERR["Throw: EKKB0210CE - KK_T_SVC_KEI_EOH_TV not found"]
    TV_003_CHK -- false --> GET_AITAI["dmpsAnkenAitaiPplanCd = svcKeiTvMap_003.getString(DMPS_ANKEN_AITAI_PPLAN_CD)"]

    TV_003_ERR --> TV_003_ERR_END(["End: Error thrown"])
    GET_AITAI --> VONU_DEFAULT["vonuBsptKh = 1 (Ka default)"]

    VONU_DEFAULT --> VONU_QUERY["Execute executeKK_T_KKTK_SVC_KEI_KK_SELECT_244"]
    VONU_QUERY --> VONU_NEXT["kktkSvcKei_244_map = db_KK_T_KKTK_SVC_KEI_244.selectNext()"]

    VONU_NEXT --> VONU_CHK{kktkSvcKei_244_map != null?}
    VONU_CHK -- true --> GET_MODEL["taknkikiModelCd = kktkSvcKei_244_map.getString(TAKNKIKI_MODEL_CD)"]
    VONU_CHK -- false --> WARN_NO_VONU["Log EKKB0010CW warning + setErrFlg(true)"]

    WARN_NO_VONU --> VONU_CONTINUE["Continue processing"]
    GET_MODEL --> TAKNKIKI_PK["Execute executeZM_M_TAKNKIKI_MODEL_PKSELECT"]

    TAKNKIKI_PK --> TAKNKIKI_CHK{taknkiki_map != null?}
    TAKNKIKI_CHK -- true --> GET_VONU["vonuBsptKh = taknkiki_map.getString(VONU_BSPT_KH)"]
    TAKNKIKI_CHK -- false --> WARN_NO_MODEL["Log EKKB0010CW warning + setErrFlg(true)"]

    WARN_NO_MODEL --> VONU_CONTINUE
    GET_VONU --> VONU_BSPT_CHK{vonuBsptKh == 0?}

    VONU_BSPT_CHK -- true --> SET_A23["henkoPcrsCd = A23, henkoPplanCd = dmpsAnkenAitaiPplanCd"]
    VONU_BSPT_CHK -- false --> SET_A75["henkoPcrsCd = A75, henkoPplanCd = PA7501"]

    SET_A23 --> INSERT_SVC["Execute insertSvcKei(svcKei_map, dmpsAnkenAitaiPplanCd)"]
    SET_A75 --> INSERT_SVC

    INSERT_SVC --> SVC_TVK["Execute executeKK_T_SVC_KEI_EOH_TV_PKSELECT"]
    SVC_TVK --> SVC_TVK_CHK{svcKeiTv_map == null?}
    SVC_TVK_CHK -- true --> SVC_TVK_ERR["Throw: EKKB0210CE - Service contract TV not found"]
    SVC_TVK_CHK -- false --> GET_TRN["reqTrnCd = getWorkParamSetteValue(commonItem, KK_CNCL_TK_SVC_SBT)"]

    SVC_TVK_ERR --> SVC_TVK_ERR_END(["End: Error thrown"])
    GET_TRN --> TRN_CHK{reqTrnCd == null?}
    TRN_CHK -- true --> TRN_ERR["Throw: EKKB0150JE - Work param management table missing"]
    TRN_CHK -- false --> RESEND_CD["reSendTkSvcSbtCd = reqTrnCd"]

    TRN_ERR --> TRN_ERR_END(["End: Error thrown"])
    RESEND_CD --> INSERT_TV["Execute insertSvcKeiTv(svcKeiTv_map, sysDate, reSendTkSvcSbtCd)"]

    INSERT_TV --> SET_TV_DATA["setMiStcKikiCnclTgDataSvckei(miStcKikiCnclTgOutSvcKeimap, svcKei_map, A64, dmpsAnkenAitaiPplanCd)"]
    SET_TV_DATA --> SET_TV_OUT["miStcKikiCnclTgOutSvcKeimap.setOutFlg(true)"]
    SET_TV_OUT --> ADD_TV_OUT["outputBean.addOutMapList_2(miStcKikiCnclTgOutSvcKeimap)"]
    ADD_TV_OUT --> TV_END(["End: eo TV HD Course path"])
```

**Constant Resolution Reference:**

| Constant Name | Resolved Value | Business Meaning |
|---------------|---------------|-----------------|
| `JBSbatKKConst.PCRS_CD_COSE_HD` | `"A39"` | HD Course — FTTH pricing course |
| `JBSbatKKConst.PPLAN_CD_PA3901` | `"PA3901"` | HD Plan — HD pricing plan |
| `JBSbatKKConst.PCRS_CD_EOH_TV_SAISO_TACH_HD` | `"A64"` | eo Light TV Resend Multi-Channel HD Course |
| `JBSbatKKConst.PPLAN_CD_PA6401` | `"PA6401"` | eo TV Multi-Channel HD Plan |
| `JBSbatKKConst.MANSION_BUKKEN_CD_001` | `"001"` | Mansion property type |
| `JBSbatKKConst.MANSION_BUKKEN_CD_002` | `"002"` | Maison property type |
| `JBSbatKKConst.PPLAN_CD_PA3701` | `"PA3701"` | New price plan (fallback after change) |
| `JBSbatKKConst.PCRS_CD_EOH_TV_SAISO` | `"A23"` | TV resend (digital/BS course) |
| `JBSbatKKConst.PCRS_CD_EOH_TV_SAISO_CDG_BS` | `"A75"` | TV resend (BS-compatible course) |
| `JKKStrConst.CD_DIV_KH_KA` | `"1"` | Permitted (V-ONU BS passthrough allowed) |
| `JKKStrConst.CD_DIV_KH_HI` | `"0"` | Not permitted (V-ONU BS passthrough not allowed) |
| `JKKStrConst.CD00565_TV_RESEND_MULTI_CH_BS` | `"PA7501"` | TV resend multi-channel BS plan |

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `svc_kei_no` | `String` | Service contract number — the unique identifier of the service contract whose price course/plan change eligibility is being evaluated. Used as the primary key across all database queries (KK_SELECT_062, KK_SELECT_145, KK_SELECT_146, PKSELECT). |

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

| Field | Type | Business Description |
|-------|------|---------------------|
| `super.opeDate` | `String` | Operation date — used as a filter parameter in all SELECT queries to ensure only current/valid records are returned |
| `commonItem` | `JKKBatCommonItem` (inherited) | Business parameter management item — read by `getWorkParamSetteValue` to retrieve the resend service type code |
| `svcKeiKaisenUcwkNo` | `String` (inherited) | Service contract change detail number — used as a key for V-ONU equipment provision service contract query (KK_SELECT_244) |
| `outputBean` | `JBSbatOutputBean` (inherited) | Output bean — receives the generated interface data maps via `addOutMapList_2` |
| `super.logPrint` | `JBSbatLogPrint` (inherited) | Logging utility — used for debug and business error log output |
| `super.commonItem` | `JKKBatCommonItem` (inherited) | Common item — used to set error flag via `setErrFlg` |
| `db_KK_T_SVC_KEI_UCWK_062` | `JBSbatCommonDBInterface` | Result holder for KK_SELECT_062 (service contract detail query) |
| `db_KK_T_SVC_KEI_145` | `JBSbatCommonDBInterface` | Result holder for KK_SELECT_145 (service contract query) |
| `db_KK_T_SVC_KEI_146` | `JBSbatCommonDBInterface` | Result holder for KK_SELECT_146 (service contract detail query) |
| `db_KK_T_SVC_KEI_EOH_TV_003` | `JBSbatCommonDBInterface` | Result holder for KK_SELECT_003 (eo TV service contract query) |
| `db_KK_T_KKTK_SVC_KEI_244` | `JBSbatCommonDBInterface` | Result holder for KK_SELECT_244 (V-ONU equipment provision service contract query) |
| `vonuBsptKh` | `String` (inherited/mutable) | V-ONU BS passthrough permission flag — initialized to default "1" (Ka/Permitted), potentially overwritten by equipment model lookup |

## 4. CRUD Operations / Called Services

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `executeKK_T_SVC_KEI_UCWK_KK_SELECT_062` | JBSbatKKMiStcKikiCncl | KK_T_SVC_KEI_UCWK (Service Contract Detail) | Query service contract detail to check for change restrictions |
| R | `executeKK_T_SVC_KEI_KK_SELECT_145` | JBSbatKKMiStcKikiCncl | KK_T_SVC_KEI (Service Contract) | Query service contract record to extract pricing course code, pricing plan code, and gene registration datetime |
| R | `executeKK_T_SVC_KEI_PKSELECT` | JBSbatKKMiStcKikiCncl | KK_T_SVC_KEI (Service Contract) | Primary key lookup of service contract by service contract number and gene registration datetime |
| R | `executeKK_T_SVC_KEI_KK_SELECT_146` | JBSbatKKMiStcKikiCncl | KK_T_SVC_KEI (Service Contract) | Query service contract for delivery contract number and mansion property code |
| R | `executeKK_T_SVC_KEI_EOH_TV_KK_SELECT_003` | JBSbatKKMiStcKikiCncl | KK_T_SVC_KEI_EOH_TV (eo TV Service Contract) | Query eo TV service contract to get DMPs application pending price plan code |
| R | `executeKK_T_KKTK_SVC_KEI_KK_SELECT_244` | JBSbatKKMiStcKikiCncl | KK_T_KKTK_SVC_KEI (V-ONU Equipment Provision Service Contract) | Query V-ONU equipment provision service contract to get indoor equipment model code |
| R | `executeZM_M_TAKNKIKI_MODEL_PKSELECT` | JBSbatKKMiStcKikiCncl | ZM_M_TAKNKIKI_MODEL (Indoor Equipment Model) | Primary key lookup of indoor equipment model to determine V-ONU BS passthrough permission |
| R | `executeKK_T_SVC_KEI_EOH_TV_PKSELECT` | JBSbatKKMiStcKikiCncl | KK_T_SVC_KEI_EOH_TV (eo TV Service Contract) | Primary key lookup of eo TV service contract for registration |
| R | `JKKBatCommon.getWorkParamSetteValue` | JKKBatCommon | Work Parameter Management Table (KK_CNCL_TK_SVC_SBT) | Retrieve resend delivery service type code from work parameter management table |
| C | `insertSvcKeiHd` | JBSbatKKMiStcKikiCncl | KK_T_SVC_KEI (Service Contract) | Register new service contract for HD Course with modified price plan |
| C | `insertSvcKei` | JBSbatKKMiStcKikiCncl | KK_T_SVC_KEI (Service Contract) | Register new service contract for eo TV HD Course |
| C | `insertSvcKeiTv` | JBSbatKKMiStcKikiCncl | KK_T_SVC_KEI_EOH_TV (eo TV Service Contract) | Register eo TV service contract with resend service type code |

**Utility/Helper Calls (non-CRUD):**

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|---------------------|
| - | `JBSbatStringUtil.Rtrim` | JBSbatStringUtil | - | Trim trailing whitespace from string fields extracted from DB results |
| - | `setMiStcKikiCnclTgDataSvckei` | JBSbatKKMiStcKikiCncl | - | Set uninstalled equipment cancellation target file (service contract) item fields |
| - | `JBSbatServiceInterfaceMap.setOutFlg` | JBSbatServiceInterfaceMap | - | Set output flag to true for interface data map |
| - | `outputBean.addOutMapList_2` | JBSbatOutputBean | - | Add interface data map to output common message list |
| - | `super.logPrint.printDebugLog` | JBSbatLogPrint | - | Output debug-level log messages |
| - | `super.logPrint.chkLogLevel` | JBSbatLogPrint | - | Check if debug log level is enabled |
| - | `super.logPrint.printBusinessErrorLog` | JBSbatLogPrint | - | Output business error log (warning with code EKKB0010CW) |
| - | `super.commonItem.setErrFlg` | JKKBatCommonItem | - | Set error flag on common item |
| - | `new JBSbatServiceInterfaceMap` | JBSbatServiceInterfaceMap | - | Create new service interface map for output data |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Batch: JBSbatKKMiStcKikiCncl.executeStbDsl() | `executeStbDsl()` -> `executePcrsPplanChgChk(svc_kei_no)` | `insertSvcKeiHd [C] KK_T_SVC_KEI` or `insertSvcKei [C] KK_T_SVC_KEI`, `insertSvcKeiTv [C] KK_T_SVC_KEI_EOH_TV` |

## 6. Per-Branch Detail Blocks

**Block 1** — [SET] Variable initialization (L4005)

> Initialize all local variables and result holder maps before processing begins.

| # | Type | Code |
|---|------|------|
| 1 | SET | `chgFlg = false` // Change flag — default to not allowed |
| 2 | SET | `pcrsCd = ""` // Price course code |
| 3 | SET | `pplanCd = ""` // Price plan code |
| 4 | SET | `geneAddDtm = ""` // Gene registration datetime |
| 5 | SET | `reqTrnCd = ""` // Transaction code |
| 6 | SET | `svcKei_map = new JBSbatCommonDBInterface()` // Service contract search result holder |
| 7 | SET | `ucwkMap_062 = null` // Service contract detail search result holder |
| 8 | SET | `ucwk062_whereParam = {svc_kei_no, super.opeDate}` // WHERE params for UCWK query |

**Block 2** — [CALL] Service contract detail query (L4019)

> Query service contract detail table to check for any existing restrictions on price course/plan changes.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `executeKK_T_SVC_KEI_UCWK_KK_SELECT_062(ucwk062_whereParam)` |
| 2 | CALL | `ucwkMap_062 = db_KK_T_SVC_KEI_UCWK_062.selectNext()` |

**Block 3** — [IF/ELSE] Check if service contract detail query returned no result (L4023)

> If no service contract detail record exists, the customer is treated as change-eligible (no restrictions). If a detail record exists, change is not allowed.

| # | Type | Code |
|---|------|------|
| 1 | COND | `null == ucwkMap_062` |

**Block 3.1** — [IF branch: no result] Change possible (L4024)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `super.logPrint.printDebugLog("*** No service contract detail = change possible ***")` |
| 2 | SET | `chgFlg = true` |

**Block 3.2** — [ELSE branch: result exists] Change not allowed (L4028)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `super.logPrint.printDebugLog("*** Service contract detail exists = change not allowed ***")` |
| 2 | SET | `chgFlg = false` |

**Block 4** — [IF] Check change flag is true (L4033)

> Only proceed with detailed eligibility checks if `chgFlg` is true (i.e., no service contract detail restriction).

| # | Type | Code |
|---|------|------|
| 1 | COND | `chgFlg` |

**Block 4.1** — [IF branch: chgFlg is true] Proceed with course/plan checks (L4034)

> Initialize local variables and query the service contract table to determine the pricing course and plan.

| # | Type | Code |
|---|------|------|
| 1 | SET | `svcKeiMap_145 = null` |
| 2 | SET | `svcKei145_whereParam = {svc_kei_no, super.opeDate}` |
| 3 | CALL | `executeKK_T_SVC_KEI_KK_SELECT_145(svcKei145_whereParam)` |
| 4 | CALL | `svcKeiMap_145 = db_KK_T_SVC_KEI_145.selectNext()` |

**Block 4.1.1** — [IF/ELSE] Check service contract query result (L4041)

> If the service contract record is not found, throw an error. Otherwise, extract pricing course, plan, and datetime.

| # | Type | Code |
|---|------|------|
| 1 | COND | `null == svcKeiMap_145` |

**Block 4.1.1.1** — [IF branch: not found] Throw error (L4042)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0210CE, new String[]{"KK_T_SVC_KEI", svc_kei_no})` |

**Block 4.1.1.2** — [ELSE branch: found] Extract fields (L4045)

| # | Type | Code |
|---|------|------|
| 1 | SET | `pcrsCd = JBSbatStringUtil.Rtrim(svcKeiMap_145.getString(JBSbatKK_T_SVC_KEI.PCRS_CD))` // Price course code |
| 2 | SET | `pplanCd = JBSbatStringUtil.Rtrim(svcKeiMap_145.getString(JBSbatKK_T_SVC_KEI.PPLAN_CD))` // Price plan code |
| 3 | SET | `geneAddDtm = JBSbatStringUtil.Rtrim(svcKeiMap_145.getString(JBSbatKK_T_SVC_KEI.GENE_ADD_DTM))` // Gene registration datetime |
| 4 | COND | `super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG)` |

**Block 4.1.1.2.1** — [IF branch: debug mode] Log extracted values (L4053)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `super.logPrint.printDebugLog("*** Service contract price course/plan change availability determination ***")` |
| 2 | EXEC | `super.logPrint.printDebugLog("Price course code: " + pcrsCd)` |
| 3 | EXEC | `super.logPrint.printDebugLog("Price plan code: " + pplanCd)` |
| 4 | EXEC | `super.logPrint.printDebugLog("Gene registration datetime: " + geneAddDtm)` |

**Block 4.1.2** — [IF/ELSE] Check if pricing course/plan matches target combinations (L4059)

> Two valid course+plan combinations are checked:
> - HD Course A39 + HD Plan PA3901 (for FTTH HD)
> - eo TV HD Course A64 + eo TV HD Plan PA6401 (for eo Light TV Resend Multi-Channel)

| # | Type | Code |
|---|------|------|
| 1 | COND | `(JBSbatKKConst.PCRS_CD_COSE_HD.equals(pcrsCd) && JBSbatKKConst.PPLAN_CD_PA3901.equals(pplanCd)) || (JBSbatKKConst.PCRS_CD_EOH_TV_SAISO_TACH_HD.equals(pcrsCd) && JBSbatKKConst.PPLAN_CD_PA6401.equals(pplanCd))` |

**Block 4.1.2.1** — [IF branch: matches target course/plan] Proceed with property type check or course-specific processing (L4061)

> Set PK query parameters and perform primary key lookup of the service contract to get delivery contract number.

| # | Type | Code |
|---|------|------|
| 1 | SET | `svcKei_param = new String[2]` |
| 2 | SET | `svcKei_param[0] = svc_kei_no` // Service contract number |
| 3 | SET | `svcKei_param[1] = geneAddDtm` // Gene registration datetime |
| 4 | CALL | `svcKei_map = executeKK_T_SVC_KEI_PKSELECT(svcKei_param)` |

**Block 4.1.2.1.1** — [IF/ELSE] Check PK select result (L4068)

> If the PK lookup returns nothing, throw an error. Otherwise, get the delivery contract number and classify property type.

| # | Type | Code |
|---|------|------|
| 1 | COND | `null == svcKei_map` |

**Block 4.1.2.1.1.1** — [IF branch: PK not found] Throw error (L4069)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0210CE, new String[]{"Service contract", "Service contract number: " + svc_kei_no})` |

**Block 4.1.2.1.1.2** — [ELSE branch: PK found] Get delivery contract number (L4073)

| # | Type | Code |
|---|------|------|
| 1 | SET | `hoshikiKeiNo = JBSbatStringUtil.Rtrim(svcKei_map.getString(JBSbatKK_T_SVC_KEI.TK_HOSHIKI_KEI_NO))` // Delivery contract number |

**Block 4.1.2.1.2** — [IF/ELSE] Check if delivery contract number is empty (L4076)

> If delivery contract number is empty, this is classified as a **Home Type** property — change is allowed.
> If delivery contract number is set, proceed to check **Mansion property code** to further classify.

| # | Type | Code |
|---|------|------|
| 1 | COND | `"".equals(hoshikiKeiNo)` |

**Block 4.1.2.1.2.1** — [IF branch: empty delivery contract number] Home Type — change allowed (L4078)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `super.logPrint.printDebugLog("*** Delivery contract number not obtained = Home Type = change possible ***")` |
| 2 | SET | `chgFlg = true` |

**Block 4.1.2.1.2.2** — [ELSE branch: delivery contract number set] Mansion type check (L4082)

> Query service contract via KK_SELECT_146 to get the delivery contract number and mansion property code.

| # | Type | Code |
|---|------|------|
| 1 | SET | `svcKeiMap_146 = null` |
| 2 | SET | `svcKei146_whereParam = {svc_kei_no, super.opeDate}` |
| 3 | CALL | `executeKK_T_SVC_KEI_KK_SELECT_146(svcKei146_whereParam)` |
| 4 | CALL | `svcKeiMap_146 = db_KK_T_SVC_KEI_146.selectNext()` |

**Block 4.1.2.1.2.2.1** — [IF/ELSE] Check KK_SELECT_146 result (L4090)

> If not found, throw error. Otherwise, extract fields and determine mansion property type.

| # | Type | Code |
|---|------|------|
| 1 | COND | `null == svcKeiMap_146` |

**Block 4.1.2.1.2.2.1.1** — [IF branch: not found] Throw error (L4092)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0210CE, new String[]{"KK_T_SVC_KEI", svc_kei_no})` |

**Block 4.1.2.1.2.2.1.2** — [ELSE branch: found] Extract mansion fields (L4095)

| # | Type | Code |
|---|------|------|
| 1 | SET | `hoshikiKeiNo_146 = JBSbatStringUtil.Rtrim(svcKeiMap_146.getString(JBSbatKK_T_SVC_KEI.TK_HOSHIKI_KEI_NO))` // Delivery contract number |
| 2 | SET | `mansionBukkenCd = JBSbatStringUtil.Rtrim(svcKeiMap_146.getString(JBSbatKK_T_MANSION_BUKKEN.MANSION_BUKKEN_CD))` // Mansion property code |

**Block 4.1.2.1.2.2.1.2.1** — [IF/ELSE-IF/ELSE] Check mansion property code (L4101)

> Three classifications:
> - `"001"` (Mansion) — change **not allowed**
> - `"002"` (Maison) — change **allowed**
> - Other — change **not allowed**

| # | Type | Code |
|---|------|------|
| 1 | COND | `!"".equals(hoshikiKeiNo_146) && JBSbatKKConst.MANSION_BUKKEN_CD_001.equals(mansionBukkenCd)` |

**Block 4.1.2.1.2.2.1.2.1.1** — [IF branch: Mansion 001] Change not allowed (L4104)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `super.logPrint.printDebugLog("*** Delivery contract number obtained and mansion property code (Mansion: 001) = Mansion = change not allowed ***")` |
| 2 | SET | `chgFlg = false` |

**Block 4.1.2.1.2.2.1.2.1.2** — [ELSE-IF branch: Maison 002] Change allowed (L4114)

| # | Type | Code |
|---|------|------|
| 1 | COND | `!"".equals(hoshikiKeiNo_146) && JBSbatKKConst.MANSION_BUKKEN_CD_002.equals(mansionBukkenCd)` |
| 2 | EXEC | `super.logPrint.printDebugLog("*** Delivery contract number obtained and mansion property code (Mansion: 002) = Maison = change possible ***")` |
| 3 | SET | `chgFlg = true` |

**Block 4.1.2.1.2.2.1.2.1.3** — [ELSE branch: other code] Change not allowed (L4124)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `super.logPrint.printDebugLog("*** Other than above = change not allowed ***")` |
| 2 | SET | `chgFlg = false` |

**Block 4.1.2.2** — [ELSE branch: does not match target course/plan] Change not allowed (L4131)

> The pricing course and plan combination is not one of the two supported combinations (HD or eo TV HD). No further action is taken.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `super.logPrint.printDebugLog("*** Otherwise = change not allowed ***")` |
| 2 | SET | `chgFlg = false` |

**Block 5** — [IF] Check chgFlag is true — register new service contract (L4136)

> If the overall eligibility determination resulted in `chgFlg = true`, register a new service contract based on the pricing course type.

| # | Type | Code |
|---|------|------|
| 1 | COND | `chgFlg` |

**Block 5.1** — [IF/ELSE] Branch by pricing course code (L4141)

> Two course-specific registration paths:
> - HD Course A39: Register via `insertSvcKeiHd`
> - eo TV HD Course A64: Register via `insertSvcKei` + `insertSvcKeiTv`

| # | Type | Code |
|---|------|------|
| 1 | COND | `JBSbatKKConst.PCRS_CD_COSE_HD.equals(pcrsCd)` |

**Block 5.1.1** — [IF branch: HD Course A39] Register new HD service contract (L4143)

> Register a new service contract for the HD Course. Set the new price plan to PA3701 (fallback plan). Generate the uninstalled equipment cancellation target file interface data and add it to the output.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `insertSvcKeiHd(svcKei_map)` |
| 2 | SET | `miStcKikiCnclTgOutSvcKeimap = new JBSbatServiceInterfaceMap()` |
| 3 | SET | `newPplanCd = JBSbatKKConst.PPLAN_CD_PA3701` // New price plan = PA3701 |
| 4 | CALL | `miStcKikiCnclTgOutSvcKeimap = setMiStcKikiCnclTgDataSvckei(miStcKikiCnclTgOutSvcKeimap, svcKei_map, JBSbatKKConst.PCRS_CD_COSE_HD, newPplanCd)` |
| 5 | CALL | `miStcKikiCnclTgOutSvcKeimap.setOutFlg(true)` |
| 6 | CALL | `outputBean.addOutMapList_2(miStcKikiCnclTgOutSvcKeimap)` |

**Block 5.1.2** — [ELSE-IF branch: eo TV HD Course A64] Register new eo TV service contract (L4167)

> This is the most complex branch. It queries eo TV service contract data, performs V-ONU equipment model verification to determine BS passthrough capability, and registers both the service contract and eo TV records.

| # | Type | Code |
|---|------|------|
| 1 | COND | `JBSbatKKConst.PCRS_CD_EOH_TV_SAISO_TACH_HD.equals(pcrsCd)` |

**Block 5.1.2.1** — [SET] Query eo TV service contract (L4169)

| # | Type | Code |
|---|------|------|
| 1 | SET | `svcKeiTvMap_003 = null` |
| 2 | SET | `svcKeiTv003_whereParam = {svc_kei_no}` |
| 3 | CALL | `executeKK_T_SVC_KEI_EOH_TV_KK_SELECT_003(svcKeiTv003_whereParam)` |
| 4 | CALL | `svcKeiTvMap_003 = db_KK_T_SVC_KEI_EOH_TV_003.selectNext()` |

**Block 5.1.2.1.1** — [IF/ELSE] Check eo TV query result (L4177)

> If not found, throw error. Otherwise, extract the DMPs application pending price plan code.

| # | Type | Code |
|---|------|------|
| 1 | COND | `null == svcKeiTvMap_003` |

**Block 5.1.2.1.1.1** — [IF branch: not found] Throw error (L4179)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0210CE, new String[]{"KK_T_SVC_KEI_EOH_TV", svc_kei_no})` |

**Block 5.1.2.1.1.2** — [ELSE branch: found] Extract DMPs plan code (L4183)

| # | Type | Code |
|---|------|------|
| 1 | SET | `dmpsAnkenAitaiPplanCd = JBSbatStringUtil.Rtrim(svcKeiTvMap_003.getString(JBSbatKK_T_DMPS_ANKEN.DMPS_ANKEN_AITAI_PPLAN_CD))` // DMPs application pending price plan code |
| 2 | SET | `opeDate = this.opeDate` |
| 3 | SET | `kktkSvcKei_244_map = new JBSbatCommonDBInterface()` |
| 4 | SET | `kktkSvcKei_244_param = {svcKeiKaisenUcwkNo, opeDate}` |
| 5 | SET | `vonuBsptKh = JKKStrConst.CD_DIV_KH_KA` // Default: V-ONU BS passthrough = permitted ("1") |
| 6 | SET | `warningMsg = "V-ONU BS passthrough could not be obtained, so resending price course (digital/BS course). Service contract number: " + svc_kei_no` |

**Block 5.1.2.1.1.2.1** — [CALL] Query V-ONU equipment provision service contract (L4192)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `executeKK_T_KKTK_SVC_KEI_KK_SELECT_244(kktkSvcKei_244_param)` |
| 2 | CALL | `kktkSvcKei_244_map = db_KK_T_KKTK_SVC_KEI_244.selectNext()` |

**Block 5.1.2.1.1.2.1.1** — [IF/ELSE] Check V-ONU equipment provision result (L4195)

> If the V-ONU equipment provision service contract exists, get the indoor equipment model code and look up its V-ONU BS passthrough permission. If not found, emit a warning log and set error flag.

| # | Type | Code |
|---|------|------|
| 1 | COND | `null != kktkSvcKei_244_map` |

**Block 5.1.2.1.1.2.1.1.1** — [IF branch: V-ONU result exists] Look up equipment model (L4197)

| # | Type | Code |
|---|------|------|
| 1 | SET | `taknkikiModelCd = JBSbatStringUtil.Rtrim(kktkSvcKei_244_map.getString(JBSbatKK_T_KKTK_SVC_KEI.TAKNKIKI_MODEL_CD))` // Indoor equipment model code |
| 2 | SET | `taknkiki_map = new JBSbatCommonDBInterface()` |
| 3 | SET | `taknkiki_param = new String[1]` |
| 4 | SET | `taknkiki_param[0] = taknkikiModelCd` |
| 5 | CALL | `taknkiki_map = executeZM_M_TAKNKIKI_MODEL_PKSELECT(taknkiki_param)` |

**Block 5.1.2.1.1.2.1.1.1.1** — [IF/ELSE] Check equipment model PK result (L4202)

> If the equipment model is found, overwrite `vonuBsptKh` with the actual BS passthrough permission from the model table. If not found, emit warning and set error flag.

| # | Type | Code |
|---|------|------|
| 1 | COND | `null != taknkiki_map` |

**Block 5.1.2.1.1.2.1.1.1.1.1** — [IF branch: model found] Get V-ONU BS passthrough (L4203)

| # | Type | Code |
|---|------|------|
| 1 | SET | `vonuBsptKh = JBSbatStringUtil.Rtrim(taknkiki_map.getString(JBSbatZM_M_TAKNKIKI_MODEL.VONU_BSPT_KH))` |

**Block 5.1.2.1.1.2.1.1.1.1.2** — [ELSE branch: model not found] Warning log (L4206)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `super.logPrint.printBusinessErrorLog("EKKB0010CW", new String[]{warningMsg})` |
| 2 | CALL | `super.commonItem.setErrFlg(true)` |

**Block 5.1.2.1.1.2.1.1.2** — [ELSE branch: V-ONU result not found] Warning log (L4211)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `super.logPrint.printBusinessErrorLog("EKKB0010CW", new String[]{warningMsg})` |
| 2 | CALL | `super.commonItem.setErrFlg(true)` |

**Block 5.1.2.1.1.2.1.2** — [IF/ELSE] Set pricing course/plan based on V-ONU BS passthrough (L4217)

> - If `vonuBsptKh == "0"` (HI/Not permitted): Use course "A23" (TV resend digital/BS course) with the DMPs pending plan
> - If `vonuBsptKh == "1"` (Ka/Permitted): Use course "A75" (TV resend BS-compatible course) with plan "PA7501"

| # | Type | Code |
|---|------|------|
| 1 | COND | `JKKStrConst.CD_DIV_KH_HI.equals(vonuBsptKh)` |

**Block 5.1.2.1.1.2.1.2.1** — [IF branch: BS passthrough not permitted] Set A23 course (L4218)

| # | Type | Code |
|---|------|------|
| 1 | SET | `henkoPcrsCd = JBSbatKKConst.PCRS_CD_EOH_TV_SAISO` // "A23" — TV resend (digital/BS course) |
| 2 | SET | `henkoPplanCd = dmpsAnkenAitaiPplanCd` // Use DMPs application pending price plan |

**Block 5.1.2.1.1.2.1.2.2** — [ELSE branch: BS passthrough permitted] Set A75 course (L4224)

| # | Type | Code |
|---|------|------|
| 1 | SET | `henkoPcrsCd = JBSbatKKConst.PCRS_CD_EOH_TV_SAISO_CDG_BS` // "A75" — TV resend (BS-compatible course) |
| 2 | SET | `henkoPplanCd = JKKStrConst.CD00565_TV_RESEND_MULTI_CH_BS` // "PA7501" — TV resend multi-channel BS plan |

**Block 5.1.2.1.1.2.2** — [CALL] Register service contract and eo TV (L4229)

> Insert the new service contract, then query and insert the eo TV contract.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `sysDate = insertSvcKei(svcKei_map, dmpsAnkenAitaiPplanCd)` |
| 2 | SET | `svcKeiTv_map = new JBSbatCommonDBInterface()` |
| 3 | SET | `svcKeiTv_param = new String[2]` |
| 4 | SET | `svcKeiTv_param[0] = svc_kei_no` // Service contract number |
| 5 | SET | `svcKeiTv_param[1] = geneAddDtm` // Gene registration datetime |
| 6 | CALL | `svcKeiTv_map = executeKK_T_SVC_KEI_EOH_TV_PKSELECT(svcKeiTv_param)` |

**Block 5.1.2.1.1.2.2.1** — [IF/ELSE] Check eo TV PK select result (L4239)

> If not found, throw error. Otherwise, continue to retrieve work parameters and register eo TV.

| # | Type | Code |
|---|------|------|
| 1 | COND | `null == svcKeiTv_map` |

**Block 5.1.2.1.1.2.2.1.1** — [IF branch: not found] Throw error (L4240)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0210CE, new String[]{"Service contract (eo Light TV)", "Service contract number: " + svc_kei_no})` |

**Block 5.1.2.1.1.2.2.1.2** — [ELSE branch: found] Get work param and register eo TV (L4245)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `reqTrnCd = JKKBatCommon.getWorkParamSetteValue(commonItem, "KK_CNCL_TK_SVC_SBT")` |
| 2 | COND | `null == reqTrnCd` |

**Block 5.1.2.1.1.2.2.1.2.1** — [IF branch: work param null] Throw error (L4248)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0150JE, new String[]{"Work Parameter Management Table(KEY: KK_CNCL_TK_SVC_SBT)"})` |

**Block 5.1.2.1.1.2.2.1.2.2** — [ELSE branch: work param exists] Register eo TV (L4254)

| # | Type | Code |
|---|------|------|
| 1 | SET | `reSendTkSvcSbtCd = reqTrnCd` // Resend delivery service type code |
| 2 | CALL | `insertSvcKeiTv(svcKeiTv_map, sysDate, reSendTkSvcSbtCd)` |
| 3 | SET | `miStcKikiCnclTgOutSvcKeimap = new JBSbatServiceInterfaceMap()` |
| 4 | CALL | `miStcKikiCnclTgOutSvcKeimap = setMiStcKikiCnclTgDataSvckei(miStcKikiCnclTgOutSvcKeimap, svcKei_map, JBSbatKKConst.PCRS_CD_EOH_TV_SAISO_TACH_HD, dmpsAnkenAitaiPplanCd)` |
| 5 | CALL | `miStcKikiCnclTgOutSvcKeimap.setOutFlg(true)` |
| 6 | CALL | `outputBean.addOutMapList_2(miStcKikiCnclTgOutSvcKeimap)` |

**Block 5.1.2.2** — [ELSE branch: not target course/plan] No action (implicit)

> The code falls through without any action if the pricing course code is neither A39 nor A64.

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `svc_kei_no` | Field | Service contract number — unique identifier for a service contract |
| `pcrsCd` | Field | Price course code — classifies the pricing course type (e.g., A39=HD Course, A64=eo TV HD Course) |
| `pplanCd` | Field | Price plan code — specific pricing plan within a course (e.g., PA3901, PA6401) |
| `geneAddDtm` | Field | Gene registration datetime — timestamp of when the service contract was first registered, used as a version key |
| `hoshikiKeiNo` | Field | Delivery contract number — identifier for the delivery-side contract; its presence or absence determines property type classification |
| `mansionBukkenCd` | Field | Mansion property code — classifies the property as "001" (Mansion), "002" (Maison), or other |
| `taknkikiModelCd` | Field | Indoor equipment model code — code identifying the customer's set-top box / indoor unit model |
| `vonuBsptKh` | Field | V-ONU BS passthrough permission flag — "1" = passthrough permitted, "0" = not permitted |
| `dmpsAnkenAitaiPplanCd` | Field | DMPs application pending price plan code — the price plan associated with a DMPs (Data Multipoint Services) application |
| `reqTrnCd` | Field | Request transaction code — retrieved from work parameter management table, indicates the type of transaction |
| `reSendTkSvcSbtCd` | Field | Resend delivery service type code — code indicating the type of service being resent |
| `chgFlg` | Field | Change flag — boolean indicating whether price course/plan change is allowed (true = allowed, false = not allowed) |
| `svcKeiKaisenUcwkNo` | Field | Service contract change detail number — used to look up V-ONU equipment provision data |
| `henkoPcrsCd` | Field | Modified price course code — the alternative price course assigned based on V-ONU BS passthrough status |
| `henkoPplanCd` | Field | Modified price plan code — the alternative price plan assigned based on V-ONU BS passthrough status |
| A39 | Course | HD Course — FTTH (Fiber To The Home) pricing course |
| A64 | Course | eo Light TV Resend Multi-Channel HD Course — pricing course for eo Light TV multi-channel HD service |
| A23 | Course | TV resend (digital/BS course) — alternative course when V-ONU BS passthrough is not permitted |
| A75 | Course | TV resend (BS-compatible course) — alternative course when V-ONU BS passthrough is permitted |
| PA3901 | Plan | HD pricing plan — the standard plan for HD Course (A39) |
| PA6401 | Plan | eo TV multi-channel HD plan — the standard plan for eo TV HD Course (A64) |
| PA3701 | Plan | Fallback price plan — the new price plan set when HD Course is changed |
| PA7501 | Plan | TV resend multi-channel BS plan — plan used when BS passthrough is permitted for resend |
| 001 | Property code | Mansion — multi-unit apartment building; changes to price course/plan are **not allowed** |
| 002 | Property code | Maison — mid-size multi-unit building; changes to price course/plan **are allowed** |
| Home Type | Property type | Single-family home — no delivery contract number is set; changes to price course/plan **are allowed** |
| V-ONU | Equipment | Virtual Optical Network Unit — fiber-optic terminal equipment; BS passthrough capability affects TV resend pricing |
| BS | Technical term | Broadcasting Satellite — satellite broadcasting; passthrough capability determines which TV resend course to use |
| FTTH | Technical term | Fiber To The Home — fiber-optic internet service type |
| DMPs | Technical term | Data Multipoint Services — multi-channel broadcast delivery system |
| KK_T_SVC_KEI | DB Table | Service Contract table — main table storing service contract records |
| KK_T_SVC_KEI_UCWK | DB Table | Service Contract Detail table — stores detail records used for change eligibility checks |
| KK_T_SVC_KEI_EOH_TV | DB Table | eo TV Service Contract table — stores service contracts for eo Light TV service |
| KK_T_KKTK_SVC_KEI | DB Table | V-ONU Equipment Provision Service Contract table — stores V-ONU equipment provision data |
| ZM_M_TAKNKIKI_MODEL | DB Table | Indoor Equipment Model master table — stores equipment model information including V-ONU BS passthrough flags |
| KK_CNCL_TK_SVC_SBT | Work Param Key | Work parameter key for cancellation delivery service type — retrieves resend service type code from work parameter management |
| EKKB0210CE | Error Code | Business exception — entity not found (service contract detail, service contract, or eo TV contract missing) |
| EKKB0150JE | Error Code | Business exception — work parameter management table entry missing |
| EKKB0010CW | Warning Code | Business warning — V-ONU BS passthrough information could not be obtained |
| CD_DIV_KH_KA | Constant | "1" — division code meaning "Permitted" (BS passthrough allowed) |
| CD_DIV_KH_HI | Constant | "0" — division code meaning "Not permitted" (BS passthrough not allowed) |
| insertSvcKeiHd | Method | Register new service contract for HD Course |
| insertSvcKei | Method | Register new service contract (used for eo TV path) |
| insertSvcKeiTv | Method | Register eo TV service contract with resend service type |
| setMiStcKikiCnclTgDataSvckei | Method | Set uninstalled equipment cancellation target file (service contract) item data |
| addOutMapList_2 | Method | Add interface data map to output common message list |
| executeStbDsl | Caller | Batch entry point that calls this method during STB (Set-Top Box) DSL processing |
