# Business Logic — JFUDslNetOpSvcKeiCC.jdgHiChrg() [112 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `com.fujitsu.futurity.bp.custom.common.JFUDslNetOpSvcKeiCC` |
| Layer | CC/Common Component — Service Contract Cancellation Business Logic |
| Module | `common` (Package: `com.fujitsu.futurity.bp.custom.common`) |

## 1. Role

### JFUDslNetOpSvcKeiCC.jdgHiChrg()

This method performs the non-charge determination processing (non-課金判定処理) for DSL network option and sub-option services during contract cancellation flows. In the K-Opticom eCustomer base system, when a customer cancels an optional add-on service (such as Mail Address WEB Cancellation, Mail WBS Cancellation, IPv6, or My Home Page capacity reduction), the system must determine whether any termination-period billing (解約時課金) applies and calculate the final billing end date.

The method implements a **routing/dispatch pattern** based on the `svcDiv` parameter. When `svcDiv` equals "1", it processes the **Option Service** (オプションサービス) branch, retrieving data from the `opInfoMap`. Otherwise, it processes the **Sub-Option Service** (サブオプションサービス) branch using `sbopInfoMap`. This branching allows a single entry point to handle both top-level and nested optional service cancellation billing logic.

Within each branch, the method follows a **delegation pattern**: it first queries the Option Service Agreement Conference SC (EKK0081A010) to obtain the service billing start date (`svcChrgStaYmd`), then checks whether the service is in active progress or halted status. If so, it delegates to `JKKBpCommon.jdgHiChrg(trgtData)` — a shared non-charge determination utility — passing calculated service dates and a cancellation-type flag ("2" for option, "3" for sub-option). If the service is not in active/halted status, it computes the billing end date as the day before the operation date and marks no termination charge.

The method serves as a **shared utility** called by 14+ direct callers across screen logic classes (KKA14201SFLogic, KKA17001SFLogic, KKW02501SFLogic, KKW02504SFLogic, KKW02507SFLogic) and CBS classes (JKKEmailInfoChgCfmCC, JKKOpsvckeiDslCC, JKKOptHiChrgJdgCC), making it a central billing determination point for DSL option service cancellations throughout the system.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["jdgHiChrg params"])
    
    START --> INIT["Return new HashMap"]
    INIT --> GETDATA["Get HashMap inMap from param.getData fixedText"]
    GETDATA --> GETDATE["Get opeDate from JFUBPCommon.getOpeDate null"]
    GETDATE --> CLEARSTATE["Initialize svcChrgStaYmd null"]
    CLEARSTATE --> INITDATA["initEKK0081A010 param fixedText IN_COL_LIST_EKK0081A010"]
    INITDATA --> MAPOP["setInMapEKK0081A010 param fixedText svc_kei_no"]
    MAPOP --> EXECSCEKK0081["executeSC handle param fixedText TEMP_ID_EKK0081A010 TEMP_ID_DTLEKK0081A010 IN_COL_LIST_EKK0081A010 ERR_COL_EKK0081A010"]
    EXECSCEKK0081 --> GETSVCSTARTYMD["Get svcChrgStaYmd from template list"]
    
    GETSVCSTARTYMD --> SVCCHK{svcDiv equals 1}
    
    SVCCHK --> YES_OP["Yes Option Service"]
    YES_OP --> OPSTATCHK{op_svc_kei_stat equals 100 or 210}
    
    OPSTATCHK --> INPROGRESS["Build trgtDataOp with service dates and flags"]
    INPROGRESS --> CALLJKKJP["JKKBpCommon.jdgHiChrg trgtDataOp"]
    CALLJKKJP --> MAPRETURNOP["Map results SVC_CHRG_ENDYMD DSLJI_CHRG_FLG"]
    MAPRETURNOP --> OPEND["Return returnMap"]
    
    OPSTATCHK --> NOTACTIVE2["Map SVC_CHRG_ENDYMD = opeDate minus 1 day DSLJI_CHRG_FLG 0"]
    NOTACTIVE2 --> OPEND2["Return returnMap"]
    
    SVCCHK --> NO_SBOP["No Sub-Option Service"]
    NO_SBOP --> SBOPSTATCHK{sbop_svc_kei_stat equals 100 or 210}
    
    SBOPSTATCHK --> SBOPINPROGRESS["Build trgtDataSbop with service dates and flags"]
    SBOPINPROGRESS --> CALLJKKSBO["JKKBpCommon.jdgHiChrg trgtDataSbop"]
    CALLJKKSBO --> MAPRETURNSBOP["Map results SVC_CHRG_ENDYMD DSLJI_CHRG_FLG"]
    MAPRETURNSBOP --> SBOPEND["Return returnMap"]
    
    SBOPSTATCHK --> SBOPNOTACTIVE["Map SVC_CHRG_ENDYMD opeDate minus 1 day DSLJI_CHRG_FLG 0"]
    SBOPNOTACTIVE --> SBOPEND2["Return returnMap"]
    
    OPEND --> FINISH(["End"])
    OPEND2 --> FINISH2(["End"])
    SBOPEND --> FINISH3(["End"])
    SBOPEND2 --> FINISH4(["End"])
```

**CRITICAL — Constant Resolution:**

| Constant | Value | Business Meaning |
|----------|-------|-----------------|
| `JFUStrConst.CD00037_100` | `"100"` | Service in progress (サービス提供中) — the option/sub-option service is actively being provided |
| `JFUStrConst.CD00037_210` | `"210"` | Service halted (サービス休止中) — the service is temporarily suspended but not cancelled |
| `JFUStrConst.CD00002_0` | `"0"` | No termination charge (解約時課金なし) — no additional billing applies upon contract cancellation |
| `svcDiv` == `"1"` | — | Option Service (オプション) — top-level optional service |
| `svcDiv` else | — | Sub-Option Service (サブオプション) — nested optional service |
| `dslSbtFlg` = `"2"` | — | Option cancellation type flag — distinguishes option service cancellation |
| `dslSbtFlg` = `"3"` | — | Sub-option cancellation type flag — distinguishes sub-option service cancellation |

**Requirements:**
- Every if/else, switch/case, loop, and method call is represented as a node.
- Diamond nodes represent conditionals; rectangular nodes represent processing steps.
- All branches are shown, including both Option and Sub-Option service paths.
- Method calls are labeled with their full names.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `handle` | `SessionHandle` | Database session handle for executing service component (SC) calls. Carries the transactional context including connection and security information. |
| 2 | `param` | `IRequestParameterReadWrite` | Request parameter object carrying the request payload. Used to initialize and retrieve data for the Option Service Agreement Conference SC (EKK0081A010) via `param.getData()` and `initData()`/`setInMapEKK0081A010()`. |
| 3 | `fixedText` | `String` | Service message identifier / template key used to locate the correct data block within the request parameter. Maps to a specific service contract message block (EKK0081A010). |
| 4 | `opInfoMap` | `HashMap` | Operation info map carrying the **Option Service** (オプションサービス) contract details. Contains fields such as `OP_SVC_KEI_STAT` (option service contract status, code CD00037), `OP_SVC_CD` (option service code), `SVC_STAYMD` (service usage start date), and `SVC_KEI_NO` (service detail number). |
| 5 | `sbopInfoMap` | `HashMap` | Sub-Option Service (サブオプションサービス) contract details map. Contains fields such as `SBOP_SVC_KEI_STAT` (sub-option service contract status, code CD00037), and `SVC_STAYMD` (sub-option service usage start date). |
| 6 | `svcDiv` | `String` | Service division identifier that routes the processing flow. Value `"1"` selects the Option Service branch; any other value selects the Sub-Option Service branch. This is the primary routing parameter for the method. |

**External State:**
- The method reads operation date via `JFUBPCommon.getOpeDate(null)`, which provides the current business operation date (e.g., the cancellation request date).
- The method reads the service contract status from `opInfoMap` and `sbopInfoMap` which are populated by prior caller logic.

## 4. CRUD Operations / Called Services

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `JFUBPCommon.getOpeDate` | — | — | Retrieves the current business operation date (e.g., today's date for the billing calculation) |
| R | `JFUDslNetOpSvcKeiCC.initData` | — | — | Initializes the IN item list for the EKK0081A010 Option Service Agreement Conference SC. Reads configuration data. |
| R | `JFUDslNetOpSvcKeiCC.setInMapEKK0081A010` | — | — | Upper mapping: populates the EKK0081A010 parameter map with the service contract number (`svc_kei_no`). Reads from opInfoMap. |
| R | `JFUDslNetOpSvcKeiCC.executeSC` | — | — | Executes the EKK0081A010 Option Service Agreement Conference SC. Sends parameters and retrieves result data. |
| R | `JFUDslNetOpSvcKeiCC.getMaxTempTempleteKey` | — | — | Retrieves the maximum temporary template key from the result map to identify the active data row. |
| R | `JFUDslNetOpSvcKeiCC.getTemplateListValue` | — | — | Extracts the `SVC_CHRG_STAYMD` (service billing start date) from the SC response template list. |
| R | `JKKBpCommon.jdgHiChrg` | — | — | Delegates to `JKKHiChrgJdgUtil.jdgHiChrg()` for non-charge determination. Performs complex billing logic including date range calculations and charge flag evaluation. |
| R | `JFUCommonUtil.addDay` | — | — | Date utility: calculates the date offset from the operation date (e.g., minus 1 day for billing end date). |

## 5. Dependency Trace

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

No screen/batch entry points found within 8 hops. Direct callers found: 94 methods.

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | KKA14201SFLogic | `actionInit` -> `JFUDslNetOpSvcKeiCC.jdgHiChrg` | `jdgHiChrg [R]` via `JKKBpCommon.jdgHiChrg` |
| 2 | KKA17001SFLogic | `getHiChrgJdg` -> `JFUDslNetOpSvcKeiCC.jdgHiChrg` | `jdgHiChrg [R]` via `JKKBpCommon.jdgHiChrg` |
| 3 | KKW02501SFLogic | `getHiChrgJdg` -> `JFUDslNetOpSvcKeiCC.jdgHiChrg` | `jdgHiChrg [R]` via `JKKBpCommon.jdgHiChrg` |
| 4 | KKW02504SFLogic | `actionInit` -> `JFUDslNetOpSvcKeiCC.jdgHiChrg` | `jdgHiChrg [R]` via `JKKBpCommon.jdgHiChrg` |
| 5 | KKW02507SFLogic | `getHiChrgJdg` -> `JFUDslNetOpSvcKeiCC.jdgHiChrg` | `jdgHiChrg [R]` via `JKKBpCommon.jdgHiChrg` |
| 6 | JKKEmailInfoChgCfmCC | `hiChrgJdgMapping` -> `JFUDslNetOpSvcKeiCC.jdgHiChrg` | `jdgHiChrg [R]` via `JKKBpCommon.jdgHiChrg` |
| 7 | JKKOpsvckeiDslCC | `hiChrgJdgMapping` -> `JFUDslNetOpSvcKeiCC.jdgHiChrg` | `jdgHiChrg [R]` via `JKKBpCommon.jdgHiChrg` |
| 8 | JKKOptHiChrgJdgCC | `optHiChrgJdg` -> `JFUDslNetOpSvcKeiCC.jdgHiChrg` | `jdgHiChrg [R]` via `JKKBpCommon.jdgHiChrg` |
| 9 | JFUDslNetOpSvcKeiCC | `dslOpSvcKeiIPv6` -> `JFUDslNetOpSvcKeiCC.jdgHiChrg` | `jdgHiChrg [R]` via `JKKBpCommon.jdgHiChrg` |
| 10 | JFUDslNetOpSvcKeiCC | `dslOpSvcKeiMlad` -> `JFUDslNetOpSvcKeiCC.jdgHiChrg` | `jdgHiChrg [R]` via `JKKBpCommon.jdgHiChrg` |
| 11 | JFUDslNetOpSvcKeiCC | `dslOpSvcKeiRs` -> `JFUDslNetOpSvcKeiCC.jdgHiChrg` | `jdgHiChrg [R]` via `JKKBpCommon.jdgHiChrg` |
| 12 | JFUDslNetOpSvcKeiCC | `dslOpSvcKeiVc` -> `JFUDslNetOpSvcKeiCC.jdgHiChrg` | `jdgHiChrg [R]` via `JKKBpCommon.jdgHiChrg` |
| 13 | JFUDslNetOpSvcKeiCC | `dslSbOpSvcKeiMlad` -> `JFUDslNetOpSvcKeiCC.jdgHiChrg` | `jdgHiChrg [R]` via `JKKBpCommon.jdgHiChrg` |
| 14 | JFUDslNetOpSvcKeiCC | `jdgHiChrg` (recursive) -> `JFUDslNetOpSvcKeiCC.jdgHiChrg` | `jdgHiChrg [R]` via `JKKBpCommon.jdgHiChrg` |

**Terminal operations reached FROM this method:** `addDay` [R], `jdgHiChrg` [R], `getTemplateListValue` [R], `getMaxTempTempleteKey` [R]

## 6. Per-Branch Detail Blocks

**Block 1** — [SET] Initialize return map and data extraction (L2745)

> Set up the return HashMap and extract user data from the request parameter.

| # | Type | Code |
|---|------|------|
| 1 | SET | `returnMap = new HashMap()` // Return map for non-charge determination results |
| 2 | SET | `inMap = (HashMap) param.getData(fixedText)` // Extract user data from request parameter using service message key |
| 3 | SET | `opeDate = JFUBPCommon.getOpeDate(null)` // Get operation date (業務日付) |
| 4 | SET | `svcChrgStaYmd = null` // Initialize service billing start date to null |

**Block 2** — [CALL] EKK0081A010 — Service Agreement Conference (L2754–L2766)

> The Option Service Agreement Conference SC is initialized, populated with the service contract number, executed, and the service billing start date is extracted from the result.

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | EXEC | `initData(param, fixedText, IN_COL_LIST_EKK0081A010)` // Initialize user data (ユーザデータ初期化) | Clear and set up the IN parameter list for the SC call |
| 2 | EXEC | `setInMapEKK0081A010(param, fixedText, (String) opInfoMap.get(EKK0351A010CBSMsg1List.SVC_KEI_NO))` // Upper mapping (上りマッピング) | Populate the service contract number from opInfoMap into the parameter map |
| 3 | CALL | `executeSC(handle, param, fixedText, TEMP_ID_EKK0081A010, TEMP_ID_DTLEKK0081A010, IN_COL_LIST_EKK0081A010, ERR_COL_EKK0081A010)` // Service IF execution (サービスIF実行) | Execute the EKK0081A010 Option Service Agreement Conference SC to retrieve contract data |
| 4 | SET | `svcChrgStaYmd = getTemplateListValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0081A010), TEMP_ID_DTLEKK0081A010, EKK0081A010CBSMsg1List.SVC_CHRG_STAYMD, 0)` // Service billing start date (サービス課金開始年月日) | Extract the service billing start date from the SC response template list |

**Block 3** — [IF] Option Service Branch: `svcDiv` equals "1" (L2768)

> If this is an Option Service (オプション), determine the billing outcome based on the current service status.

| # | Type | Code |
|---|------|------|
| 1 | SET | `trgtDataOp = new HashMap()` // Target data map for Option non-charge determination |
| 2 | IF | Check service status (L2771): `JFUStrConst.CD00037_100` ("100" = Service in progress / サービス提供中) OR `JFUStrConst.CD00037_210` ("210" = Service halted / サービス休止中) |

**Block 3.1** — [nested IF true] Service in progress or halted — Option Service (L2772–L2794)

> When the option service is actively provided or temporarily halted, calculate billing dates through the non-charge determination utility. The method builds a target data map with the service billing start date, cancellation-type flag "2" (オプション解約種別フラグ), option service code, option service usage start/end dates, then delegates to `JKKBpCommon.jdgHiChrg()` for the determination. Results are mapped back to the return map.

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | `trgtDataOp.put("svcKeiChrgStaYmd", svcChrgStaYmd)` // Service contract billing start date (サービス契約サービス課金開始日) |
| 2 | SET | `trgtDataOp.put("dslSbtFlg", "2")` // Cancellation-type flag "2" (解約種別フラグ) — distinguishes option service cancellation |
| 3 | SET | `trgtDataOp.put("opSvcCd", opInfoMap.get(EKK0351A010CBSMsg1List.OP_SVC_CD))` // Option service code (オプションサービスコード) |
| 4 | SET | `trgtDataOp.put("opSvcUseStaYmd", opInfoMap.get(EKK0351A010CBSMsg1List.SVC_STAYMD))` // Option service usage start date (オプションサービス契約サービス利用開始日) |
| 5 | SET | `trgtDataOp.put("opSvcUseEndYmd", opeDate)` // Option service usage end date set to operation date (オプションサービス契約サービス利用終了日) |
| 6 | CALL | `resMap = JKKBpCommon.jdgHiChrg(trgtDataOp)` // Non-charge determination processing (非課金判定処理) — delegates to JKKHiChrgJdgUtil |
| 7 | SET | `returnMap.put(EKK0351C250CBSMsg.SVC_CHRG_ENDYMD, resMap.get(OUT_PARAM_SVC_CHRG_ENDYMD))` // Service billing end date (サービス課金終了年月日) |
| 8 | SET | `returnMap.put(EKK0351C250CBSMsg.DSLJI_CHRG_FLG, resMap.get(OUT_PARAM_CHRGFLG))` // Termination charge flag (解約時課金フラグ) |

**Block 3.2** — [IF false] Service not in progress or halted — Option Service (L2795–L2800)

> When the option service is NOT in active/halted status (e.g., already cancelled or never started), set the billing end date to the day before the operation date and mark no termination charge.

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | `returnMap.put(EKK0351C250CBSMsg.SVC_CHRG_ENDYMD, JFUCommonUtil.addDay(opeDate, -1))` // Service billing end date = operation date minus 1 day (サービス課金終了年月日) |
| 2 | SET | `returnMap.put(EKK0351C250CBSMsg.DSLJI_CHRG_FLG, JFUStrConst.CD00002_0)` // No termination charge flag = "0" (解約時課金フラグ) |

**Block 4** — [ELSE] Sub-Option Service Branch (L2804)

> When `svcDiv` is not "1", this is a Sub-Option Service (サブオプション) branch. The logic mirrors the Option branch but uses `sbopInfoMap` and Sub-Option-specific CBS messages.

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | IF | Check service status (L2807): `JFUStrConst.CD00037_100` ("100" = Service in progress / サービス提供中) OR `JFUStrConst.CD00037_210` ("210" = Service halted / サービス休止中) |

> **NOTE:** There is a potential bug on line 2808: the code reads `opInfoMap.get(EKK0401A010CBSMsg1List.SBOP_SVC_KEI_STAT)` instead of `sbopInfoMap.get(...)`. The second condition uses `opInfoMap` while it should reference `sbopInfoMap` for the sub-option status field. This means the sub-option service status check may read the wrong map, potentially causing incorrect billing determination for sub-option services.

**Block 4.1** — [nested IF true] Service in progress or halted — Sub-Option Service (L2809–L2832)

> When the sub-option service is actively provided or temporarily halted, calculate billing through the non-charge determination utility using sub-option-specific data: billing start date, cancellation-type flag "3" (サブオプション解約種別フラグ), sub-option service usage start/end dates.

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | `trgtDataSbop = new HashMap()` // Target data map for Sub-Option non-charge determination |
| 2 | SET | `trgtDataSbop.put("svcKeiChrgStaYmd", svcChrgStaYmd)` // Service contract billing start date (サービス契約サービス課金開始日) |
| 3 | SET | `trgtDataSbop.put("dslSbtFlg", "3")` // Cancellation-type flag "3" (解約種別フラグ) — distinguishes sub-option service cancellation |
| 4 | SET | `trgtDataSbop.put("subOpSvcUseStaYmd", sbopInfoMap.get(EKK0401A010CBSMsg1List.SVC_STAYMD))` // Sub-option service usage start date (サブオプションサービス契約サービス利用開始日) |
| 5 | SET | `trgtDataSbop.put("subOpSvcUseEndYmd", opeDate)` // Sub-option service usage end date set to operation date (サブオプションサービス契約サービス利用終了日) |
| 6 | CALL | `resMap = JKKBpCommon.jdgHiChrg(trgtDataSbop)` // Non-charge determination processing (非課金判定処理) — delegates to JKKHiChrgJdgUtil |
| 7 | SET | `returnMap.put(EKK0401C180CBSMsg.SVC_CHRG_ENDYMD, resMap.get(OUT_PARAM_SVC_CHRG_ENDYMD))` // Service billing end date (サービス課金終了年月日) |
| 8 | SET | `returnMap.put(EKK0401C180CBSMsg.DSLJI_CHRG_FLG, resMap.get(OUT_PARAM_CHRGFLG))` // Termination charge flag (解約時課金フラグ) |

**Block 4.2** — [IF false] Service not in progress or halted — Sub-Option Service (L2833–L2838)

> When the sub-option service is NOT in active/halted status, set the billing end date to the day before the operation date and mark no termination charge.

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | `returnMap.put(EKK0401C180CBSMsg.SVC_CHRG_ENDYMD, JFUCommonUtil.addDay(opeDate, -1))` // Service billing end date = operation date minus 1 day (サービス課金終了年月日) |
| 2 | SET | `returnMap.put(EKK0401C180CBSMsg.DSLJI_CHRG_FLG, JFUStrConst.CD00002_0)` // No termination charge flag = "0" (解約時課金フラグ) |

**Block 5** — [RETURN] Return results (L2841)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return returnMap` // Return the computed billing determination results |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `jdgHiChrg` | Method | Non-charge determination (非課金判定) — evaluates whether a cancelled service qualifies for free-of-charge treatment during the billing transition period |
| `svcDiv` | Field | Service division (サービス区分) — routes processing between Option ("1") and Sub-Option (other) service types |
| `svcChrgStaYmd` | Field | Service billing start date (サービス課金開始年月日) — the date from which billing started for the option/sub-option service, retrieved from EKK0081A010 SC |
| `opeDate` | Field | Operation date (運用日付) — the current business date used as the reference point for billing calculations (e.g., cancellation request date) |
| `SVC_CHRG_ENDYMD` | Field | Service billing end date (サービス課金終了年月日) — the date until which billing continues after cancellation request; may be adjusted based on non-charge determination |
| `DSLJI_CHRG_FLG` | Field | Termination charge flag (解約時課金フラグ) — "0" means no termination charge; populated by the non-charge determination utility |
| `op_svc_kei_stat` | Field | Option service contract status (オプションサービス契約ステータス) — CD00037 code indicating current state of the option service |
| `sbop_svc_kei_stat` | Field | Sub-option service contract status (サブオプションサービス契約ステータス) — CD00037 code indicating current state of the sub-option service |
| `dslSbtFlg` | Field | Cancellation-type flag (解約種別フラグ) — distinguishes between option ("2") and sub-option ("3") service cancellation types |
| `trgtDataOp` | Field | Target data map for Option non-charge determination — carries service dates, cancellation flag, and service code to the determination utility |
| `trgtDataSbop` | Field | Target data map for Sub-Option non-charge determination — carries service dates, cancellation flag, and service code to the determination utility |
| `jkdHiChrg` (JKKBpCommon) | Method | Non-charge determination processing (非課金判定処理) — shared utility that calculates whether termination-period billing applies based on service dates and cancellation type |
| CD00037 | Constant | Service contract status code (サービス契約ステータスコード) — domain code for service lifecycle states |
| CD00037_100 = "100" | Constant | Service in progress (サービス提供中) — the service is actively being provided to the customer |
| CD00037_210 = "210" | Constant | Service halted (サービス休止中) — the service is temporarily suspended but the contract is still active |
| CD00002_0 = "0" | Constant | No termination charge (解約時課金なし) — the cancellation qualifies for no additional billing |
| EKK0081A010 | SC Code | Option Service Agreement Conference SC (オプションサービス契約照会SC) — retrieves option service contract details including billing start date |
| EKK0351A010 | SC Code | Option Service Contract Agreement SC (オプションサービス契約合意SC) — option service contract management |
| EKK0351C250 | SC Code | Option Service Contract Cancellation SC (オプションサービス契約取消SC) — cancellation result messages |
| EKK0401C180 | SC Code | Sub-Option Service Contract Cancellation SC (サブオプションサービス契約取消SC) — sub-option cancellation result messages |
| `SVC_STAYMD` | Field | Service usage start date (サービス利用開始日) — when the option/sub-option service began for the customer |
| `OP_SVC_CD` | Field | Option service code (オプションサービスコード) — identifies which option service is being cancelled (e.g., MLAD, VC, IPv6, RS) |
| `SVC_KEI_NO` | Field | Service detail number (サービス契約番号) — unique identifier for the service contract line item |
| DSL | Business term | Digital Subscriber Line — broadband internet access technology; here refers to DSL network-based optional add-on services |
| Option Service | Business term | オプションサービス — top-level optional add-on services (Mail Address WEB Cancellation, Mail WBS Cancellation, IPv6, My Home Page capacity reduction, Remote Support) |
| Sub-Option Service | Business term | サブオプションサービス — nested optional services under a parent option service |
| JKKBpCommon | Class | K-Opticom Business Processing Common component — contains shared business logic including non-charge determination utility |
| JKKHiChrgJdgUtil | Class | K-Opticom High Charge Determination Utility — the underlying implementation of the non-charge determination logic |
| EKK0081A010CBSMsg | Class | Message constant class for EKK0081A010 SC — defines field names for the Option Service Agreement Conference |
| EKK0081A010CBSMsg1List | Class | Message constant class for EKK0081A010 detail list — defines fields in the SC response detail list (SVC_KEI_NO, SVC_CHRG_STAYMD, OP_SVC_CD, SVC_STAYMD, OP_SVC_KEI_STAT) |
| EKK0351C250CBSMsg | Class | Message constant class for EKK0351C250 SC — defines cancellation result fields (SVC_CHRG_ENDYMD, DSLJI_CHRG_FLG) for option services |
| EKK0401C180CBSMsg | Class | Message constant class for EKK0401C180 SC — defines cancellation result fields (SVC_CHRG_ENDYMD, DSLJI_CHRG_FLG) for sub-option services |
| EKK0401A010CBSMsg1List | Class | Message constant class for sub-option service detail — defines fields in the sub-option service status list (SBOP_SVC_KEI_STAT, SVC_STAYMD) |
