# Business Logic — JKKHakkoSODCC.stpUkOdrCtrl() [513 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC` |
| Layer | CC/Common Component |
| Module | `common` (Package: `com.fujitsu.futurity.bp.custom.common`) |

## 1. Role

### JKKHakkoSODCC.stpUkOdrCtrl()

This method performs the **suspension order control processing** (中断受付オーダ制御処理) for the K-Opticom eo customer core system. When a customer contract is suspended (e.g., for non-payment, transfer cancellation, or other stoppage reasons), this method determines the appropriate types of **Service Order Data (SOD)** to issue based on the service type and the associated optional services. It is a central dispatch method in the order fulfillment subsystem, handling three major service categories: **eo net/FTTH broadband services**, **mobile services** (e-mobile, WiMAX, Wi-Fi Spot), and **eo telephone services**.

The method implements a **routing/dispatch pattern**: it first determines the service kind (net, mobile, or tel) via `jdgSvcKind()`, then branches into one of three processing paths. Within each branch, it queries existing option services, evaluates their status codes, and calls `addSOD()` or `addTokiSOD()` to register specific suspension-related SOD orders. Key business rules include: skipping SOD issuance for private mansion-type FTTH installations, handling number portability (050 numbers), processing Wi-Fi Spot session counts for mobile suspensions, and coordinating transfer tickets for telephone service changes.

This method is called by four other methods within `JKKHakkoSODCC` — `bmpSwitchOdrCtrl`, `hakkoSOD`, `kaihkOdrCtrl`, and `useStpOdrCtrl` — making it a shared utility invoked during various suspension scenarios including contract suspension screening, issuance, transfer, and usage suspension.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["stpUkOdrCtrl called"])
    START --> EXTRACT["Extract SOD basic / service / detail info from sodMap"]
    EXTRACT --> SHKKA["shkkaMap: clear hash keys 3 times"]
    SHKKA --> GETPARAMS["Get sys_id, svc_kei_no, svc_kei_ucwk_no, gene_add_dtm"]
    GETPARAMS --> SVCJUDGE["jdgSvcKind: determine service type"]
    SVCJUDGE --> CHKNET{"svc_kind == NET<br/>or pcrs_cd == FURETTSU?"}
    CHKNET -->|Yes| NET_BRANCH_START
    CHKNET -->|No| CHKMOb{"svc_kind == MOB?"}
    CHKMOb -->|Yes| MOB_BRANCH_START
    CHKMOb -->|No| CHKTel{"svc_kind == TEL?"}
    CHKTel -->|Yes| TEL_BRANCH_START
    CHKTel -->|No| ENDRET["Return param"]

    subgraph NET["eo Net / FTTH Branch"]
        NET_BRANCH_START --> MANSION{"isMansionPrvate?"}
        MANSION -->|Yes| NET_RETURN["Return param immediately"]
        MANSION -->|No| CALL_EKK0351["callEKK0351B010SC: option service list"]
        CALL_EKK0351 --> CHECK_STATUS["statusCode != 0 ? throw"]
        CHECK_STATUS --> RESET["Reset dial_flg=fmtcel=false<br/>fixipad_flg=mltise_flg=false"]
        RESET --> LOOP_OPT["Loop msgList: process each option service"]
        LOOP_OPT --> DUP_CHECK{"opSvcCd == DUP?"}
        DUP_CHECK -->|Yes| STAT_SUSPEND{"stat == 210/030/220?"}
        STAT_SUSPEND -->|Yes| SET_DIAL["Set dial_flg=true"]
        STAT_SUSPEND -->|No| FIXIP_CHECK{"opSvcCd == FIXIPAD?"}
        DUP_CHECK -->|No| FIXIP_CHECK
        DUP_CHECK -->|No| MLT_CHECK{"opSvcCd == MLTISE?"}
        FIXIP_CHECK -->|Yes| SET_FIXIP["Set fixipad_flg=true<br/>stat < 910"]
        FIXIP_CHECK -->|No| MLT_CHECK
        MLT_CHECK -->|Yes| SET_MLT["Set mltise_flg=true<br/>stat == 210/030/220"]
        SET_DIAL --> AFTER_LOOP
        SET_FIXIP --> AFTER_LOOP
        SET_MLT --> AFTER_LOOP
        MLT_CHECK -->|No| AFTER_LOOP
    end

    AFTER_LOOP --> SIM_CHK{"svcKeiUcwkNo matches?"}
    SIM_CHK -->|No| NEXT_OPT["continue loop"]
    SIM_CHK -->|Yes| STARTRSV{"isStartRsvOption?"}
    STARTRSV -->|Yes| NEXT_OPT
    STARTRSV -->|No| DUP_CHECK

    NEXT_OPT --> SET_SAME_TRN["Set same_trn_no from dial/fixip/mlt flags"]
    SET_SAME_TRN --> SET_UCWK["Set svc_kei_ucwk_no and gadtm"]
    SET_UCWK --> ADD_SOD_FTTH["addSOD: ODR_NAIYO_CD_106 FTTH Auth"]
    ADD_SOD_FTTH --> DIAL_CHECK{"dial_flg?"}
    DIAL_CHECK -->|Yes| ADD_SOD_DIAL["addSOD: ODR_NAIYO_CD_140 Dial Suspension"]
    DIAL_CHECK -->|No| MLT_CHECK2{"fixipad && mltise?"}
    ADD_SOD_DIAL --> MLT_CHECK2
    MLT_CHECK2 -->|Yes| ADD_SOD_MLT["addSOD: ODR_NAIYO_CD_170 Multisection Fixed IP"]
    MLT_CHECK2 -->|No| NET_END["End net branch"]
    ADD_SOD_MLT --> NET_END

    subgraph MOB["Mobile Service Branch"]
        MOB_BRANCH_START --> WIFISPOT_1{"pcrs_cd == WIFISPOT?"}
        WIFISPOT_1 -->|Yes| MOB_SAME_EMPTY["same_trn_no = empty"]
        WIFISPOT_1 -->|No| CHG_SVC{"chgSvcKeiJdg?"}
        CHG_SVC -->|Yes| MOB_GET_SAME["getSame_trn_no"]
        CHG_SVC -->|No| CALL_EKK0161["callEKK0161A010SC: detail consent"]
        MOB_GET_SAME --> CALL_EKK0161
        CALL_EKK0161 --> GET_PCRS["Get ucwkPcrsCd"]
        GET_PCRS --> EMOBILE{"isEmobile?"}
        EMOBILE -->|Yes| EMO_SAKI{"saki_svc_kei_no exists?"}
        EMO_SAKI -->|Yes| ADD_SOD_EMO["addSOD: ODR_NAIYO_CD_314 e-mobile Suspension"]
        EMO_SAKI -->|No| WIMAX{"ucwkPcrsCd == WiMAX?"}
        EMOBILE -->|No| WIMAX
        ADD_SOD_EMO --> WIMAX
        WIMAX -->|Yes| ADD_SOD_WIMAX["addSOD: ODR_NAIYO_CD_310 WiMAX CUI"]
        WIMAX -->|No| WIFISPOT_2{"ucwkPcrsCd == FREE_WIFI<br/>or WIFISPOT?"}
        ADD_SOD_WIMAX --> WIFISPOT_2
        WIFISPOT_2 -->|Yes| WIFI_OPER["countUpWiFiSpotSessions + judgeOdrHakkoJoken4WiFiSpot"]
        WIFI_OPER --> WIFI_CNT{"wifiSpotCnt > 0?"}
        WIFI_CNT -->|Yes| ADD_SOD_WIFICHG["addSOD: ODR_NAIYO_CD_302 Wi-Fi Spot Change"]
        WIFI_CNT -->|No| ADD_SOD_WIFSUS["addSOD: ODR_NAIYO_CD_304 Wi-Fi Spot Suspension"]
        ADD_SOD_WIFICHG --> MOB_END["End mobile branch"]
        ADD_SOD_WIFSUS --> MOB_END
        WIFISPOT_2 -->|No| MOB_END
        MOB_SAME_EMPTY --> MOB_END
    end

    subgraph TEL["eo Tel Service Branch"]
        TEL_BRANCH_START --> IDO_CHECK{"ido_div == USESTP<br/>&& syori_div != null?"}
        IDO_CHECK -->|Yes| TEL_GET_SAME["getSame_trn_no"]
        IDO_CHECK -->|No| TEL_EMPTY["same_trn_no = empty"]
        TEL_GET_SAME --> TEL_SETUP["Set svc_kei_ucwk_no and gadtm"]
        TEL_EMPTY --> TEL_SETUP
        TEL_SETUP --> TEL_ADD1["addSOD: ODR_NAIYO_CD_223 SIP Suspension"]
        TEL_ADD1 --> TEL_050CHECK{"ido_div == USESTP<br/>&& syori_div != null?"}
        TEL_050CHECK -->|Yes| GET_050["getOpSvcKei4Eohtel: 050 number options"]
        GET_050 --> LOOP_050["Loop 050 options"]
        LOOP_050 --> STAT_050{"stat == 910/920?"}
        STAT_050 -->|Yes| SKIP_050["continue (cancelled/cleared)"]
        STAT_050 -->|No| SET_050["Set op_svc_kei_no_tikan + gadtm"]
        SET_050 --> ADD_SOD_050["addSOD: ODR_NAIYO_CD_249 Num Port/Delete"]
        ADD_SOD_050 --> LOOP_END["Loop end"]
        SKIP_050 --> LOOP_END
        LOOP_END --> CALL_EKK0191["callEKK0191A010SC: detail consent for eo Tel"]
        CALL_EKK0191 --> TELNO_JUDGE{"isTelnoSODJudge?"}
        TELNO_JUDGE -->|Yes| ADD_SOD_TEL["addSOD: ODR_NAIYO_CD_226 + 266"]
        TELNO_JUDGE -->|No| TEL_TOKI["addTokiSOD: transfer ticket"]
        ADD_SOD_TEL --> TEL_TOKI
        TEL_TOKI --> TEL_END["End tel branch"]
        TEL_050CHECK -->|No| CALL_EKK0191
        TEL_EMPTY --> TEL_ADD1
    end

    TEL_END --> ENDRET
    NET_END --> ENDRET
    MOB_END --> ENDRET
    NET_RETURN --> ENDRET

    style NET fill:#e1f5fe
    style MOB fill:#f3e5f5
    style TEL fill:#e8f5e9
```

**CRITICAL — Constant Resolution:**

The following constants are used for branching and SOD order type identification:

| Constant | Value | Business Meaning |
|----------|-------|-----------------|
| `SVC_KIND_NET` | `"1"` | Net service (broadband/FTTH) |
| `SVC_KIND_MOB` | `"4"` | Mobile service |
| `SVC_KIND_TEL` | `"2"` | Telephone service |
| `PCRS_CD_ADSL_FURETTSU` | `"A22"` | ADSL Furetsu plan (treated as net) |
| `OP_SVC_CD_DUP` | (value from `JKKHakkoSODConstCC`) | Duplex/Dial-up connection option |
| `OP_SVC_CD_FIXIPAD` | (value from `JKKHakkoSODConstCC`) | Fixed IP address option |
| `OP_SVC_CD_MLTISE` | (value from `JKKHakkoSODConstCC`) | Multisection (multi-line) option |
| `SVC_KEI_STAT_210` | (value from `JKKHakkoSODConstCC`) | Service status: suspended/stopped |
| `SVC_KEI_STAT_030` | (value from `JKKHakkoSODConstCC`) | Service status: paused |
| `SVC_KEI_STAT_220` | (value from `JKKHakkoSODConstCC`) | Service status: usage halted |
| `SVC_KEI_STAT_910` | (value from `JKKHakkoSODConstCC`) | Service status: completed/finished |
| `PCRS_CD_WIFISPOT` | `"PA3001"` | Wi-Fi Spot plan |
| `PCRS_CD_FREE_WIFI` | `"A45"` | Free WiFi plan |
| `PCRS_CD_WIMAX` | `"A46"` | WiMAX plan |
| `OP_SVC_CD_N050` | (value from `JKKHakkoSODConstCC`) | 050 number portability option |
| `TELNO_JUDGE_002` | (value from field) | Telephone number judgment code 002 |
| `IDO_DIV_USESTP` | (value from `JKKHakkoSODConstCC`) | IDO division: usage suspension |
| `FUNC_CODE_1` | (value from `JKKHakkoSODConstCC`) | Function code 1 |

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `handle` | `SessionHandle` | Session manager handle carrying context (DB connections, transaction info) required for all service component calls and SOD issuance operations |
| 2 | `param` | `IRequestParameterReadWrite` | Request/response parameter object carrying model groups and control maps; serves as the accumulator for SOD order data throughout processing |
| 3 | `fixedText` | `String` | Request data map ID — used as a key to access request data maps, though primarily passed through rather than actively modified in this method |
| 4 | `sodMap` | `HashMap<String, Object>` | Container holding three sub-maps: SOD basic information (SOD_KIHON_INFO), service contract information (SVC_KEI_INFO), and service contract detail information (SVC_KEI_UCWK_INFO) |

**Instance fields read by this method:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `pcrs_cd` | `String` | Pricing code (plan code) — determines specific plan type for the service |
| `ido_div` | `String` | IDO (usage suspension) division flag — indicates whether this is a usage suspension scenario |
| `syori_div` | `String` | Processing division — distinguishes between different processing types (null != indicates number portability reuse stop) |
| `dial_flg` | `boolean` | Flag indicating if a dial-up connection option with suspended status exists |
| `fmtcel_flg` | `boolean` | Flag for fixed cellular (home cellular) option (commented-out in current code) |
| `fixipad_flg` | `boolean` | Flag indicating if a fixed IP address option with active status exists |
| `mltise_flg` | `boolean` | Flag indicating if a multisection option with suspended status exists |
| `same_trn_no` | `String[]` | Same processing number — tracking number for concurrent processing to prevent duplicate SOD |
| `svc_kei_ucwk_no` | `String[]` | Service contract detail number |
| `svc_kei_ucwk_gadtm` | `String[]` | Service contract detail generation registration date-time |
| `op_svc_kei_no_dial` | `String` | Option service contract number for dial-up |
| `op_gadtm_dial` | `String` | Option service contract generation registration date-time for dial-up |
| `op_svc_kei_no_mltise` | `String` | Option service contract number for multisection |
| `op_gadtm_mltise` | `String` | Option service contract generation registration date-time for multisection |
| `mae_recode_ch_svc_kei_no` | `String` | Previous record change service contract number |
| `op_svc_kei_no_tikan` | `String` | Option service contract number for number substitution |
| `op_gadtm_tikan` | `String` | Option service contract generation registration date-time for number substitution |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `JKKHakkoSODCC.callEKK0351B010SC` | `EKK0351B010SC` | Option service contract list (via EKK0351B010CBSMsg1List) | Calls option service contract list inquiry for net service — retrieves all options tied to the service contract number |
| R | `JKKHakkoSODCC.callEKK0161A010SC` | `EKK0161A010SC` | Service contract detail consent (via EKK0161A010CBSMsg1List) | Calls service contract detail consent inquiry for mobile service — retrieves pricing code and detail info |
| R | `JKKHakkoSODCC.callEKK0191A010SC` | `EKK0191A010SC` | Service contract detail consent for eo telephone (via EKK0191A010CBSMsg1List) | Calls service contract detail consent inquiry for eo telephone — retrieves BMP (number portability) and telephone number status |
| R | `JKKHakkoSODCC.getKK0351Hash` | (internal) | Option service details (via EKK0351A010CBSMsg1List) | Internal helper to get detailed option service information for each option service number |
| R | `JKKHakkoSODCC.getSame_trn_no` | (internal) | Same processing number | Retrieves the same processing number for concurrent processing control |
| R | `JKKHakkoSODCC.getOpSvcKei4Eohtel` | (internal) | Option service for telephone (via EKK0351A010CBSMsg1List) | Retrieves 050 number portability option services for telephone service |
| R | `JKKHakkoSODCC.countUpWiFiSpotSessions` | (internal) | Wi-Fi Spot session count | Counts available Wi-Fi Spot sessions for mobile service suspension |
| - | `JKKHakkoSODCC.chgSvcKeiJdg` | (internal) | Service contract change judgment | Judges whether the current service contract number differs from the previous record |
| - | `JKKHakkoSODCC.isMansionPrvate` | (internal) | Mansion private judgment | Determines if the customer is in a private mansion-type installation (skips SOD issuance) |
| - | `JKKHakkoSODCC.isEmobile` | (internal) | e-mobile judgment | Determines if the mobile plan is an e-mobile plan |
| - | `JKKHakkoSODCC.isStartRsvOption` | (internal) | Start reservation option check | Checks if there is an option start reservation (not yet reflected) for a given option service |
| - | `JKKHakkoSODCC.isTelnoSODJudge` | (internal) | Telephone number SOD judgment | Judges whether to issue SOD based on telephone number status (SIP/number info deletion) |
| - | `JKKHakkoSODCC.jdgSvcKind` | (internal) | Service kind judgment | Determines the service type from the pricing code or other indicators |
| - | `JKKHakkoSODCC.judgeOdrHakkoJoken4WiFiSpot` | (internal) | Order issuance eligibility judgment for Wi-Fi Spot | Evaluates Wi-Fi Spot suspension eligibility conditions |
| - | `JKKHakkoSODCC.isBlank` | (internal) | Blank check | Checks if a string is null or blank |
| - | `JKKHakkoSODCC.shkkaMap` | (internal) | Hash key clear | Clears all keys from a HashMap (used to refresh SOD info maps) |
| C | `JKKHakkoSODCC.addSOD` | - | Service Order Data (SOD) | Registers a suspension-related SOD with the given order content code |
| C | `JKKHakkoSODCC.addTokiSOD` | - | Temporary SOD (transfer ticket) | Registers a transfer ticket SOD for telephone service transfer processing |
| - | `JKKHakkoSODCC.addItnTokiSOD` | - | Internal temporary SOD | Calls internal method to register temporary SOD (e.g., SIP/transfer cancellation) |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | `JKKHakkoSODCC.bmpSwitchOdrCtrl()` | `bmpSwitchOdrCtrl()` -> `stpUkOdrCtrl()` | `addSOD` [C], `addTokiSOD` [C], `callEKK0351B010SC` [R], `callEKK0161A010SC` [R], `callEKK0191A010SC` [R], `getSame_trn_no` [R], `isTelnoSODJudge` [-], `countUpWiFiSpotSessions` [R], `getOpSvcKei4Eohtel` [R], `judgeOdrHakkoJoken4WiFiSpot` [-] |
| 2 | `JKKHakkoSODCC.hakkoSOD()` | `hakkoSOD()` -> `stpUkOdrCtrl()` | Same as #1 |
| 3 | `JKKHakkoSODCC.kaihkOdrCtrl()` | `kaihkOdrCtrl()` -> `stpUkOdrCtrl()` | Same as #1 |
| 4 | `JKKHakkoSODCC.useStpOdrCtrl()` | `useStpOdrCtrl()` -> `stpUkOdrCtrl()` | Same as #1 |

**Terminal operations from this method (all CRUD endpoints reached):**
- `addSOD` [C] — Creates SOD (multiple order types: ODR_NAIYO_CD_106, 140, 170, 314, 310, 302, 304, 223, 249, 226, 266)
- `addTokiSOD` [C] — Creates temporary SOD (transfer ticket, ODR_NAIYO_CD_260)
- `addItnTokiSOD` [-] — Internal temporary SOD registration
- `callEKK0351B010SC` [R] — Reads option service contract list
- `callEKK0161A010SC` [R] — Reads service contract detail consent
- `callEKK0191A010SC` [R] — Reads service contract detail consent for eo tel
- `getKK0351Hash` [R] — Reads option service details
- `getSame_trn_no` [R] — Reads same processing number
- `getOpSvcKei4Eohtel` [R] — Reads 050 number option services
- `countUpWiFiSpotSessions` [R] — Reads Wi-Fi Spot session count
- `chgSvcKeiJdg` [-] — Service contract change judgment (no data access)
- `isMansionPrvate` [-] — Mansion private type judgment (no data access)
- `isEmobile` [-] — e-mobile plan judgment (no data access)
- `isStartRsvOption` [-] — Start reservation option check (no data access)
- `isTelnoSODJudge` [-] — Telephone number SOD judgment
- `jdgSvcKind` [-] — Service kind determination (no data access)
- `judgeOdrHakkoJoken4WiFiSpot` [-] — Wi-Fi Spot eligibility judgment (no data access)
- `isBlank` [-] — String blank check (no data access)
- `shkkaMap` [-] — Hash map key clearing (no data access)

## 6. Per-Branch Detail Blocks

**Block 1** — [SET] Extract SOD maps from sodMap (L6299–L6305)

> Unpacks the three sub-maps from sodMap and clears their keys via shkkaMap to ensure clean data.

| # | Type | Code |
|---|------|------|
| 1 | SET | `sod_kihon_info_Map = (HashMap)sodMap.get(SOD_KIHON_INFO)` // SOD basic information |
| 2 | SET | `svc_kei_info_Map = (HashMap)sodMap.get(SVC_KEI_INFO)` // Service contract information |
| 3 | SET | `svc_kei_ucwk_info_Map = (HashMap)sodMap.get(SVC_KEI_UCWK_INFO)` // Service contract detail information |
| 4 | EXEC | `sod_kihon_info_Map = shkkaMap(sod_kihon_info_Map)` // Clear hash keys |
| 5 | EXEC | `svc_kei_info_Map = shkkaMap(svc_kei_info_Map)` // Clear hash keys |
| 6 | EXEC | `svc_kei_ucwk_info_Map = shkkaMap(svc_kei_ucwk_info_Map)` // Clear hash keys |

**Block 2** — [SET] Extract required parameters (L6310–L6317)

> Retrieves the business-critical parameters: sys_id, service contract number, service contract detail number, and generation registration date-time.

| # | Type | Code | Code |
|---|------|------|------|
| 1 | SET | `sys_id = (String)sod_kihon_info_Map.get(INFO_SYSID)` // SYSID |
| 2 | SET | `svc_kei_no = (String)svc_kei_info_Map.get(INFO_SVC_KEI_NO)` // Service contract number |
| 3 | SET | `svc_kei_ucwk_no = (String)svc_kei_ucwk_info_Map.get(INFO_SVC_KEI_UCWK_NO)` // Service contract detail number |
| 4 | SET | `chaf_svc_kei_ucwk_gene_add_dtm = (String)svc_kei_ucwk_info_Map.get(INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM)` // Change-post detail generation registration date-time |

**Block 3** — [SET] Service type determination (L6321–L6325)

> Determines the service kind using jdgSvcKind(). Note: old method jdgSvcKind_PcrsCd() was replaced in IT2-2016-0000004.

| # | Type | Code |
|---|------|------|
| 1 | SET | `svc_kind = jdgSvcKind()` // Service type judgment |

**Block 4** — [IF] eo net / FTTH branch: mansion private check (L6329–L6337)

> For net services (or ADSL Furetsu), if the installation is a private mansion type, skip all SOD issuance. FTTH authentication is not issued and dial-up connection contracts are not available for mansion types.

| # | Type | Code |
|---|------|------|
| 1 | IF | `SVC_KIND_NET.equals(svc_kind) || PCRS_CD_ADSL_FURETTSU.equals(pcrs_cd)` [SVC_KIND_NET="1"] [PCRS_CD_ADSL_FURETTSU="A22"] |
| 2 | IF | `isMansionPrvate()` |
| 3 | RETURN | `return param` // No SOD for private mansion |

**Block 5** — [EXEC] Initialize option service inquiry for net branch (L6340–L6345)

> Sets up input/output hash maps for the option service list inquiry, passing the service contract number.

| # | Type | Code |
|---|------|------|
| 1 | SET | `inHashMltise = new HashMap()` // Input map for option service inquiry |
| 2 | SET | `resultHashMltise = new HashMap()` // Result map for option service inquiry |
| 3 | EXEC | `inHashMltise.put(SVC_KEI_NO, svc_kei_no)` // Service contract number |

**Block 6** — [CALL] Option service list inquiry (L6350–L6355)

> Calls EKK0351B010SC to retrieve the option service contract list. Updated from EKK0351B002SC per IT1-2013-0000869 (2013-04-12).

| # | Type | Code |
|---|------|------|
| 1 | CALL | `statusCode = callEKK0351B010SC(param, handle, inHashMltise, resultHashMltise, FUNC_CODE_1)` // EKK0351B010: option service list inquiry (service contract number) |
| 2 | IF | `statusCode != 0` |
| 3 | EXEC | `throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode))` // Error if non-zero |

**Block 7** — [SET] Reset flags (L6358–L6359)

> Resets the processing flags before scanning option services.

| # | Type | Code |
|---|------|------|
| 1 | SET | `dial_flg = fmtcel_flg = false` // Reset dial and fixed cellular flags |
| 2 | SET | `fixipad_flg = mltise_flg = false` // Reset fixed IP and multisection flags (added 2013-04-11) |

**Block 8** — [EXEC] Retrieve option service message list (L6363–L6364)

> Gets the CAANMsg array from the result map. Updated from TEMPLATE_ID_EKK0351B002 per IT1-2013-0000869.

| # | Type | Code |
|---|------|------|
| 1 | SET | `msgList = (CAANMsg[])resultHashMltise.get(TEMPLATE_ID_EKK0351B010)` // Option service message list |

**Block 9** — [IF] Service contract number change judgment (L6373–L6376)

> If the service contract number differs between previous and current records, reset the single-process flag.

| # | Type | Code |
|---|------|------|
| 1 | IF | `chgSvcKeiJdg(svc_kei_no)` // Service contract number changed from previous record |
| 2 | SET | `syorizmFlg = false` // Reset single-process flag |

**Block 10** — [IF] Process options with suspended status (L6379–L6418)

> Only processes once (if syorizmFlg is false). Scans option services for those attached to the service contract and identifies dial-up connections with suspended status.

| # | Type | Code |
|---|------|------|
| 1 | IF | `!syorizmFlg` // Process only once per service contract |
| 2 | FOR | `for(int i = 0; i < msgList.length; i++)` // Loop through option services |
| 3 | SET | `retHash = msgList[i].getMsgData()` |
| 4 | SET | `op_svc_kei_noEKK0351B = (String)retHash.get(OP_SVC_KEI_NO)` // Option service contract number |
| 5 | CALL | `kk0351A010Hash = getKK0351Hash(param, handle, op_svc_kei_noEKK0351B)` |
| 6 | SET | `opSvcKeiNo = (String)kk0351A010Hash.get(OP_SVC_KEI_NO)` // From EKK0351A010CBSMsg1List |
| 7 | SET | `opSvcKeiStat = (String)kk0351A010Hash.get(OP_SVC_KEI_STAT)` |
| 8 | SET | `kk0351GeneAddDtm = (String)kk0351A010Hash.get(GENE_ADD_DTM)` |
| 9 | SET | `opSvcCd = (String)kk0351A010Hash.get(OP_SVC_CD)` |
| 10 | IF | `OP_SVC_CD_DUP.equals(opSvcCd)` // Check for dial-up connection option |
| 11 | IF | `SVC_KEI_STAT_210.equals(opSvcKeiStat) || SVC_KEI_STAT_030.equals(opSvcKeiStat) || SVC_KEI_STAT_220.equals(opSvcKeiStat)` [Added per KT1-2013-0000728 for usage halt] |
| 12 | SET | `this.op_svc_kei_no_dial = opSvcKeiNo` // Option service contract number |
| 13 | SET | `this.op_gadtm_dial = kk0351GeneAddDtm` |
| 14 | SET | `dial_flg = true` // Set dial flag |
| 15 | SET | `syorizmFlg = true` // Single-process flag |

**Block 11** — [FOR] Second loop: process each option service for net branch (L6421–L6510)

> Iterates through all option services, checking if each is associated with the current service contract detail. Evaluates fixed IP and multisection options.

| # | Type | Code |
|---|------|------|
| 1 | FOR | `for(int i = 0; i < msgList.length; i++)` // Loop through option services |
| 2 | SET | `retHash = msgList[i].getMsgData()` |
| 3 | SET | `op_svc_kei_noEKK0351B = (String)retHash.get(OP_SVC_KEI_NO)` // Option service contract number |
| 4 | CALL | `kk0351A010Hash = getKK0351Hash(param, handle, op_svc_kei_noEKK0351B)` |
| 5 | SET | `opSvcKeiNo = (String)kk0351A010Hash.get(OP_SVC_KEI_NO)` |
| 6 | SET | `svcKeiUcwkNo = (String)kk0351A010Hash.get(SVC_KEI_UCWK_NO)` |
| 7 | SET | `opSvcKeiStat = (String)kk0351A010Hash.get(OP_SVC_KEI_STAT)` |
| 8 | SET | `kk0351GeneAddDtm = (String)kk0351A010Hash.get(GENE_ADD_DTM)` |
| 9 | SET | `opSvcCd = (String)kk0351A010Hash.get(OP_SVC_CD)` |
| 10 | IF | `isNull(svcKeiUcwkNo) || !svc_kei_ucwk_no.equals(svcKeiUcwkNo)` // Skip if not associated with current detail |
| 11 | EXEC | `continue` |
| 12 | ELSE-IF | `isStartRsvOption(param, handle, FUNC_CODE_1, opSvcKeiNo)` [OM-2016-0000007] // Check for start reservation |
| 13 | EXEC | `continue` // Skip if option start reservation exists (not yet reflected) |
| 14 | ELSE-IF | `OP_SVC_CD_FIXIPAD.equals(opSvcCd)` // Fixed IP address option |
| 15 | IF | `SVC_KEI_STAT_910.compareTo(opSvcKeiStat) > 0` // Status less than completed |
| 16 | SET | `fixipad_flg = true` |
| 17 | ELSE-IF | `OP_SVC_CD_MLTISE.equals(opSvcCd)` // Multisection option |
| 18 | IF | `SVC_KEI_STAT_210.equals(opSvcKeiStat) || SVC_KEI_STAT_030.equals(opSvcKeiStat) || SVC_KEI_STAT_220.equals(opSvcKeiStat)` [KT1-2013-0000728] |
| 19 | SET | `this.op_svc_kei_no_mltise = opSvcKeiNo` |
| 20 | SET | `this.op_gadtm_mltise = kk0351GeneAddDtm` |
| 21 | SET | `mltise_flg = true` |

**Block 12** — [IF] Set same_trn_no for concurrent processing control (L6515–L6533)

> If dial, fixed cellular, or fixed IP+multisection flags are set, retrieve the same processing number to prevent duplicate SOD issuance.

| # | Type | Code |
|---|------|------|
| 1 | IF | `dial_flg || fmtcel_flg || (fixipad_flg && mltise_flg)` // Dial-up, fixed cellular, or fixed IP + multisection exists |
| 2 | SET | `sameTrnNo = new String[1]` |
| 3 | CALL | `getSame_trn_no(param, handle, null, sameTrnNo)` // Get same processing number |
| 4 | SET | `this.same_trn_no = sameTrnNo[0]` |
| 5 | ELSE | |
| 6 | SET | `this.same_trn_no = ""` |

**Block 13** — [SET] Set service detail info fields (L6538–L6541)

> Stores the service contract detail number and generation registration date-time.

| # | Type | Code |
|---|------|------|
| 1 | SET | `this.svc_kei_ucwk_no = new String[1]` |
| 2 | SET | `this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no` |
| 3 | SET | `this.svc_kei_ucwk_gadtm = new String[1]` |
| 4 | SET | `this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm` |

**Block 14** — [CALL] FTTH Auth Registration SOD (L6544)

> Always issues the base FTTH authentication registration SOD for net services.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_106)` // FTTH authentication / temporary suspension |

**Block 15** — [IF] Dial-up connection SOD (L6547–L6550)

> If dial-up connection option with suspended status exists, issue a dial-up suspension SOD.

| # | Type | Code |
|---|------|------|
| 1 | IF | `dial_flg` // Dial-up connection registered and "suspended/stopped" |
| 2 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_140)` // Dial-up connection / temporary suspension |

**Block 16** — [IF] Multisection + Fixed IP SOD (L6558–L6561)

> If both fixed IP and multisection flags are set, issue a multisection fixed IP suspension SOD.

| # | Type | Code |
|---|------|------|
| 1 | IF | `fixipad_flg && mltise_flg` // Multisection with fixed IP |
| 2 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_170)` // Multisection (fixed IP) / temporary suspension |

**Block 17** — [IF] Previous record tracking (L6565–L6568)

> If a same processing number exists (concurrent processing detected), store the service contract number as the previous record change number.

| # | Type | Code |
|---|------|------|
| 1 | IF | `!isBlank(this.same_trn_no)` // Same processing number exists |
| 2 | SET | `this.mae_recode_ch_svc_kei_no = new String(svc_kei_no)` |

**Block 18** — [IF] Mobile service branch: Wi-Fi Spot pcrs_cd check (L6573–L6576)

> For mobile services, if the pricing code is Wi-Fi Spot, clear the same processing number.

| # | Type | Code |
|---|------|------|
| 1 | IF | `SVC_KIND_MOB.equals(svc_kind)` [SVC_KIND_MOB="4"] |
| 2 | IF | `PCRS_CD_WIFISPOT.equals(pcrs_cd)` [PCRS_CD_WIFISPOT="PA3001"] |
| 3 | SET | `this.same_trn_no = ""` |

**Block 19** — [IF] Mobile: service contract number change (L6579–L6586)

> If the service contract number changed from the previous record, get the same processing number.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `chgSvcKeiJdg(svc_kei_no)` |
| 2 | SET | `sameTrnNo = new String[1]` |
| 3 | CALL | `getSame_trn_no(param, handle, null, sameTrnNo)` |
| 4 | SET | `this.same_trn_no = sameTrnNo[0]` |

**Block 20** — [IF] Mobile: service contract detail inquiry (L6593–L6624)

> If service contract detail number exists, call EKK0161A010SC to get detail consent information.

| # | Type | Code |
|---|------|------|
| 1 | IF | `null != svc_kei_ucwk_no && 0 < svc_kei_ucwk_no.length()` |
| 2 | SET | `inEKK0161A010Hash = new HashMap()` |
| 3 | SET | `retEKK0161A010Hash = new HashMap()` |
| 4 | EXEC | `inEKK0161A010Hash.put(SVC_KEI_UCWK_NO, svc_kei_ucwk_no)` // Service contract detail number |
| 5 | EXEC | `inEKK0161A010Hash.put(GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm)` // Generation registration date-time |
| 6 | CALL | `statusCode = callEKK0161A010SC(param, handle, inEKK0161A010Hash, retEKK0161A010Hash, FUNC_CODE_1)` // EKK0161A010: service contract detail consent |
| 7 | IF | `statusCode != 0` |
| 8 | EXEC | `throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode))` |
| 9 | SET | `eKK0161A010Hash = (HashMap)retEKK0161A010Hash.get(TEMPLATE_ID_EKK0161A010)` |
| 10 | IF | `null != eKK0161A010Hash` |
| 11 | SET | `ucwkPcrsCd = (String)eKK0161A010Hash.get(PCRS_CD)` // Pricing code from detail info |

**Block 21** — [IF] Mobile: e-mobile handling (L6627–L6647)

> If the mobile plan is e-mobile and a previous service contract number exists, issue an e-mobile suspension SOD.

| # | Type | Code |
|---|------|------|
| 1 | IF | `isEmobile()` // e-mobile plan |
| 2 | SET | `saki_svc_kei_no = (String)svc_kei_info_Map.get(INFO_SAKI_SVC_KEI_NO)` // Previous service contract number |
| 3 | IF | `null != saki_svc_kei_no && 0 < saki_svc_kei_no.length()` |
| 4 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_314)` // e-mobile / temporary suspension |

**Block 22** — [IF] Mobile: WiMAX handling (L6649–L6662)

> If the detail pricing code is WiMAX, set the service detail info and issue a WiMAX CUI suspension SOD.

| # | Type | Code |
|---|------|------|
| 1 | IF | `PCRS_CD_WIMAX.equals(ucwkPcrsCd)` [PCRS_CD_WIMAX="A46"] |
| 2 | SET | `this.svc_kei_ucwk_no = new String[1]` |
| 3 | SET | `this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no` |
| 4 | SET | `this.svc_kei_ucwk_gadtm = new String[1]` |
| 5 | SET | `this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm` |
| 6 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_310)` // WiMAX / CUI temporary suspension |

**Block 23** — [IF] Mobile: Wi-Fi Spot handling (L6666–L6701)

> If the detail pricing code is Free WiFi or Wi-Fi Spot, count available Wi-Fi Spot sessions and issue appropriate SOD.

| # | Type | Code |
|---|------|------|
| 1 | IF | `PCRS_CD_FREE_WIFI.equals(ucwkPcrsCd) || PCRS_CD_WIFISPOT.equals(ucwkPcrsCd)` [PCRS_CD_FREE_WIFI="A45"] |
| 2 | SET | `wifiSpotCnt = countUpWiFiSpotSessions(param, handle, sys_id, svc_kei_ucwk_no)` // Count available Wi-Fi Spot sessions |
| 3 | CALL | `judgeOdrHakkoJoken4WiFiSpot(param, handle, sys_id)` // Evaluate Wi-Fi Spot suspension eligibility |
| 4 | IF | `wifiSpotCnt > 0` // Multiple suspensible Wi-Fi Spot contracts exist |
| 5 | SET | `this.svc_kei_ucwk_no = new String[1]` |
| 6 | SET | `this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no` |
| 7 | SET | `this.svc_kei_ucwk_gadtm = new String[1]` |
| 8 | SET | `this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm` |
| 9 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_302)` // Wi-Fi Spot / change |
| 10 | ELSE | |
| 11 | SET | `this.svc_kei_ucwk_no = new String[1]` |
| 12 | SET | `this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no` |
| 13 | SET | `this.svc_kei_ucwk_gadtm = new String[1]` |
| 14 | SET | `this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm` |
| 15 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_304)` // Wi-Fi Spot / temporary suspension (last spot) |

**Block 24** — [IF] Mobile: previous record tracking (L6704–L6707)

> If same processing number exists, store the service contract number.

| # | Type | Code |
|---|------|------|
| 1 | IF | `!isBlank(this.same_trn_no)` |
| 2 | SET | `this.mae_recode_ch_svc_kei_no = new String(svc_kei_no)` |

**Block 25** — [IF] eo telephone branch: IDO division check (L6713–L6725)

> For telephone services, if this is a usage suspension with a processing division (number portability reuse stop), get the same processing number.

| # | Type | Code |
|---|------|------|
| 1 | IF | `SVC_KIND_TEL.equals(svc_kind)` [SVC_KIND_TEL="2"] |
| 2 | IF | `IDO_DIV_USESTP.equals(this.ido_div) && null != this.syori_div` [ido_div == USESTP && syori_div != null — indicates number portability reuse stop] |
| 3 | SET | `this.same_trn_no = getSame_trn_no(param, handle)` |
| 4 | ELSE | |
| 5 | SET | `this.same_trn_no = ""` |

**Block 26** — [SET] Set telephone service detail info (L6727–L6730)

> Stores the service contract detail number and generation registration date-time for telephone services.

| # | Type | Code |
|---|------|------|
| 1 | SET | `this.svc_kei_ucwk_no = new String[1]` |
| 2 | SET | `this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no` |
| 3 | SET | `this.svc_kei_ucwk_gadtm = new String[1]` |
| 4 | SET | `this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm` |

**Block 27** — [CALL] SIP Suspension SOD (L6733)

> Always issues the SIP suspension SOD for telephone services.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_223)` // SIP / temporary suspension |

**Block 28** — [IF] 050 number portability option handling (L6737–L6784)

> Only if usage suspension with processing division — processes 050 number portability options. For each option, checks the status and issues a number substitution/deletion SOD if not cancelled/cleared.

| # | Type | Code |
|---|------|------|
| 1 | IF | `IDO_DIV_USESTP.equals(this.ido_div) && null != this.syori_div` |
| 2 | CALL | `kk0351MapList = getOpSvcKei4Eohtel(param, handle, svc_kei_ucwk_no, OP_SVC_CD_N050)` // Get 050 number option services |
| 3 | FOR | `for(HashMap eKK0351A010SCHash : kk0351MapList)` |
| 4 | SET | `kk0351No = (String)eKK0351A010SCHash.get(OP_SVC_KEI_NO)` |
| 5 | SET | `op_gene_add_dtm = (String)eKK0351A010SCHash.get(GENE_ADD_DTM)` |
| 6 | SET | `op_svc_kei_stat = (String)eKK0351A010SCHash.get(OP_SVC_KEI_STAT)` |
| 7 | IF | `SVC_KEI_STAT_910.equals(op_svc_kei_stat) || SVC_KEI_STAT_920.equals(op_svc_kei_stat)` [OM-2014-0001727 — cancelled or cleared] |
| 8 | EXEC | `continue` // Do not issue SOD for cancelled/cleared |
| 9 | ELSE | |
| 10 | SET | `this.op_svc_kei_no_tikan = kk0351No` |
| 11 | SET | `this.op_gadtm_tikan = op_gene_add_dtm` |
| 12 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_249)` // Number substitution / deletion |

**Block 29** — [CALL] Telephone detail consent inquiry (L6787–L6801)

> Calls EKK0191A010SC to retrieve service contract detail consent information for eo telephone.

| # | Type | Code |
|---|------|------|
| 1 | SET | `inHashUcwk = new HashMap()` |
| 2 | SET | `resultHashUcwk = new HashMap()` |
| 3 | EXEC | `inHashUcwk.put(SVC_KEI_UCWK_NO, svc_kei_ucwk_no)` |
| 4 | EXEC | `inHashUcwk.put(GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm)` |
| 5 | CALL | `statusCode = callEKK0191A010SC(param, handle, inHashUcwk, resultHashUcwk, FUNC_CODE_1)` // EKK0191A010: service contract detail consent for eo telephone |
| 6 | IF | `statusCode != 0` |
| 7 | EXEC | `throw new CCException("", new SCCallException("", String.valueOf(statusCode), statusCode))` |
| 8 | SET | `eKK0191A010Hash = (HashMap)resultHashUcwk.get(TEMPLATE_ID_EKK0191A010)` |

**Block 30** — [IF] Telephone number SOD judgment (L6813–L6822)

> Judges whether to issue SIP/number info deletion and ENUM cancellation SODs based on telephone number status.

| # | Type | Code |
|---|------|------|
| 1 | IF | `isTelnoSODJudge(handle, param, svc_kei_ucwk_no, chaf_svc_kei_ucwk_gene_add_dtm, null, TELNO_JUDGE_002)` |
| 2 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_226)` // SIP / number info deletion |
| 3 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_266)` // ENUM setting / deletion |

**Block 31** — [CALL] Transfer ticket registration (L6825–L6827)

> Registers a transfer ticket SOD for telephone service transfer processing.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `param = addItnTokiSOD(handle, param, svc_kei_ucwk_no, ODR_NAIYO_CD_260)` // Internal: transfer destination registration cancellation |
| 2 | CALL | `param = addTokiSOD(handle, param, this.ido_div, null)` // Transfer ticket SOD registration |

**Block 32** — [RETURN] Return param (L6829)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return param` |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| SOD | Acronym | Service Order Data — telecom order fulfillment entity representing an order for service registration, change, or cancellation |
| stpUkOdrCtrl | Field | Suspension Order Control — the core method for determining and issuing suspension-related SODs |
| svc_kei_no | Field | Service contract number — unique identifier for a service contract line item |
| svc_kei_ucwk_no | Field | Service contract detail number — identifier for a specific service contract detail/line |
| chaf_svc_kei_ucwk_gene_add_dtm | Field | Change-post service contract detail generation registration date-time — timestamp when the detail was last updated |
| sys_id | Field | System identifier — identifies the system context for Wi-Fi Spot session lookups |
| odr_naiyo_cd | Field | Order content code — classifies the type of SOD order (e.g., FTTH auth, dial suspension, WiMAX CUI, SIP suspension) |
| pcrs_cd | Field | Pricing code / plan code — identifies the specific pricing plan or service tier |
| svc_kind | Field | Service kind — category of service: net (broadband), mob (mobile), or tel (telephone) |
| opc_svc_cd | Field | Option service code — identifies the type of optional service attached to a contract (e.g., DUP=dial-up, FIXIPAD=fixed IP, MLTISE=multisection) |
| svc_kei_stat | Field | Service contract status — indicates the current state of a service contract or option (e.g., 210=suspended, 030=paused, 220=usage halted, 910=completed) |
| same_trn_no | Field | Same processing number — prevents duplicate SOD issuance during concurrent processing |
| dial_flg | Field | Dial-up connection flag — set to true when a dial-up option with suspended status is detected |
| fixipad_flg | Field | Fixed IP address flag — set to true when a fixed IP option with active status is detected |
| mltise_flg | Field | Multisection flag — set to true when a multisection option with suspended status is detected |
| syorizmFlg | Field | Single-process flag — prevents redundant processing when service contract number changes |
| ido_div | Field | IDO (usage suspension) division — indicates the type of usage suspension scenario |
| syori_div | Field | Processing division — distinguishes processing types; non-null indicates number portability reuse stop |
| mae_recode_ch_svc_kei_no | Field | Previous record change service contract number — tracks the prior contract number during concurrent processing |
| op_svc_kei_no_dial | Field | Option service contract number for dial-up connection |
| op_gadtm_dial | Field | Option service contract generation registration date-time for dial-up |
| op_svc_kei_no_mltise | Field | Option service contract number for multisection |
| op_gadtm_mltise | Field | Option service contract generation registration date-time for multisection |
| op_svc_kei_no_tikan | Field | Option service contract number for number substitution (050 portability) |
| op_gadtm_tikan | Field | Option service contract generation registration date-time for number substitution |
| FTTH | Business term | Fiber To The Home — fiber-optic broadband service |
| WiMAX | Business term | Worldwide Interoperability for Microwave Access — mobile broadband wireless service |
| e-mobile | Business term | e-mobile — mobile carrier service (softbank group) |
| Wi-Fi Spot | Business term | Public/private Wi-Fi access point service — counts of available sessions determine SOD type |
| SIP | Business term | Session Initiation Protocol — VoIP telephony protocol used for eo telephone service |
| ENUM | Business term | E.164 Number Mapping — DNS-based telephone number resolution system |
| 050 number | Business term | 050 series number — VoIP number portability type in Japan |
| CUI | Business term | Customer Usage ID — unique identifier for WiMAX service usage |
| mansion type | Business term | Private multi-unit dwelling installation — FTTH authentication and dial-up are not supported |
| addSOD | Method | Registers a new SOD (Service Order Data) with the system |
| addTokiSOD | Method | Registers a temporary SOD (transfer ticket) for transfer processing |
| addItnTokiSOD | Method | Registers internal temporary SOD (e.g., transfer destination registration cancellation) |
| jdgSvcKind | Method | Judges the service type (net/mobile/tel) based on pricing code or other indicators |
| shkkaMap | Method | Clears all keys from a HashMap to refresh data |
| chgSvcKeiJdg | Method | Judges whether the current service contract number differs from the previous record |
| isMansionPrvate | Method | Determines if the customer is in a private mansion-type installation |
| isEmobile | Method | Determines if the mobile plan is an e-mobile plan |
| isStartRsvOption | Method | Checks if there is an unreflected option start reservation |
| isTelnoSODJudge | Method | Judges whether to issue SOD based on telephone number status |
| countUpWiFiSpotSessions | Method | Counts the number of available Wi-Fi Spot sessions |
| judgeOdrHakkoJoken4WiFiSpot | Method | Evaluates Wi-Fi Spot suspension eligibility conditions |
| EKK0351B010SC | SC Code | Option service contract list inquiry service component — retrieves all options for a service contract number |
| EKK0161A010SC | SC Code | Service contract detail consent inquiry service component — retrieves detail consent info for mobile |
| EKK0191A010SC | SC Code | Service contract detail consent inquiry for eo telephone — retrieves BMP and telephone number status |
| FUNC_CODE_1 | Constant | Function code 1 — standard function code used for inquiry operations |
| ODR_NAIYO_CD_106 | Constant | FTTH authentication registration order type |
| ODR_NAIYO_CD_140 | Constant | Dial-up connection temporary suspension order type |
| ODR_NAIYO_CD_170 | Constant | Multisection (fixed IP) temporary suspension order type |
| ODR_NAIYO_CD_223 | Constant | SIP temporary suspension order type |
| ODR_NAIYO_CD_226 | Constant | SIP / number information deletion order type |
| ODR_NAIYO_CD_249 | Constant | Number portability / substitution deletion order type (050 numbers) |
| ODR_NAIYO_CD_260 | Constant | Transfer ticket completion order type |
| ODR_NAIYO_CD_266 | Constant | ENUM setting / deletion order type |
| ODR_NAIYO_CD_302 | Constant | Wi-Fi Spot change order type |
| ODR_NAIYO_CD_304 | Constant | Wi-Fi Spot temporary suspension order type |
| ODR_NAIYO_CD_310 | Constant | WiMAX CUI temporary suspension order type |
| ODR_NAIYO_CD_314 | Constant | e-mobile temporary suspension order type |