
## 6. Per-Branch Detail Blocks

### Block 1 - [IF] svc_kind branch: NET/ADSL (svc_kind == "1" || svc_kind == "5") (L8974)

> Branch for eo Light Network (FTTH/Broadband) and eoADSL cancellation processing.

| # | Type | Code |
|---|------|------|
| 1 | SET | `getSameTrnNoFlg = false` // Same processing number search flag (同一処理番号採番フラグ) [-> false] |
| 2 | SET | `eKK0351A010SCHashList = new ArrayList()` // Option service contract list [-> new ArrayList] |
| 3 | SET | `eKK0341B022SCHash = null` // Equipment-provided service contract list result (機器提供サービス契約一覧照会結果) |
| 4 | SET | `inHashMltise = new HashMap()` // Input hash for multi-service query |
| 5 | SET | `resultHashMltise = new HashMap()` // Result hash for multi-service query |
| 6 | SET | `inHashMltise.put(SVC_KEI_NO, svc_kei_no)` // Service contract number (サービス契約番号) |
| 7 | CALL | `callEKK0351B002SC(param, handle, inHashMltise, resultHashMltise, FUNC_CODE_1)` // Option service contract list inquiry (オプションサービス契約一覧照会 - サービス契約番号) |
| 8 | IF | `0 != statusCode` -> throw CCException with SCCallException |
| 9 | SET | `msgEKK0351B002SCList = resultHashMltise.get(TEMPLATE_ID_EKK0351B002)` // Option SVC contract list array |
| 10 | FOR | `i = 0` to `msgEKK0351B002SCList.length` // Iterate option service contracts |

#### Block 1.1 - [IF] Option service code match: Email/HP/MList/IPv6/Dup/Multi/FmtCel (L8997)

> Check if the option service code is one of the cancelable services.

| # | Type | Code |
|---|------|------|
| 1 | SET | `eKK0351B002SCHash = msgEKK0351B002SCList[i].getMsgData()` |
| 2 | SET | `op_svc_cd = eKK0351B002SCHash.get(OP_SVC_CD).toString()` // Option service code (オプションサービスコード) |
| 3 | IF | `op_svc_cd == 011 (EMAIL) OR 012 (HP) OR 032 (MLIST) OR 035 (IPv6) OR 033 (DUP) OR 031 (MLTISE) OR 034 (FMTCEL)` (L8997) |

##### Block 1.1.1 - [IF] Call EKK0351A010SC for agreement details (L9010)

> Get detailed agreement info for the matching option service.

| # | Type | Code |
|---|------|------|
| 1 | SET | `inHashSvcKei = new HashMap()` |
| 2 | SET | `resultHashSvcKei = new HashMap()` |
| 3 | SET | `inHashSvcKei.put(OP_SVC_KEI_NO, eKK0351B002SCHash.get(OP_SVC_KEI_NO))` // Option service contract number (オプションサービス契約番号) |
| 4 | SET | `inHashSvcKei.put(GENE_ADD_DTM, eKK0351B002SCHash.get(GENE_ADD_DTM))` // Generation registration datetime |
| 5 | CALL | `callEKK0351A010SC(param, handle, inHashSvcKei, resultHashSvcKei, FUNC_CODE_1)` // Option SVC agreement inquiry |
| 6 | IF | `0 != statusCode` -> throw CCException |
| 7 | SET | `eKK0351A010SCHash = resultHashSvcKei.get(TEMPLATE_ID_EKK0351A010)` |
| 8 | SET | `op_mskm_dtl_no = eKK0351A010SCHash.get(MSKM_DTL_NO).toString()` // Submission detail number (申込明細番号) |
| 9 | SET | `op_svc_dlre_cd = eKK0351A010SCHash.get(SVC_DLRE_CD).toString()` // Service cancellation reason code (サービス解約理由コード) |
| 10 | SET | `op_mskm_dtl_no = shkkaChr(op_mskm_dtl_no)` // Null to empty string initialization |

###### Block 1.1.1.1 - [IF] Movement division matches cancellation target (L9036)

> Check if this option matches the cancellation order based on movement division.

| # | Type | Code |
|---|------|------|
| 1 | IF | `(IDO_DIV_DSL == ido_div OR IDO_DIV_TEKKYODSL == ido_div) AND op_mskm_dtl_no == this.mskm_dtl_no` [IDO_DIV_DSL="00005", IDO_DIV_TEKKYODSL="00006"] |
| 2 | OR | `IDO_DIV_KYOSEIDSL == ido_div AND SVC_DLRE_CD_KYOSEIDSL == op_svc_dlre_cd AND op_mskm_dtl_no == this.mskm_dtl_no` [IDO_DIV_KYOSEIDSL="00064"] |
| 3 | OR | `IDO_DIV_CANCEL == ido_div AND op_mskm_dtl_no == this.mskm_dtl_no` [IDO_DIV_CANCEL="00008"] |

####### Block 1.1.1.1.1 - [IF] Multi-Selection with fixed Global IP check (L9060)

> For Multi-Selection option, check if a fixed Global IP address exists that needs cancellation.

| # | Type | Code |
|---|------|------|
| 1 | IF | `op_svc_cd == 031 (MLTISE)` (L9060) |
| 2 | FOR | `j = 0` to `msgEKK0351B002SCList.length` // Iterate all option contracts |
| 3 | SET | `op_svc_cd_fix = eKK0351B002SCHashFix.get(OP_SVC_CD).toString()` |
| 4 | SET | `op_svc_kei_stat_fix = eKK0351B002SCHashFix.get(OP_SVC_KEI_STAT).toString()` // Option service contract status (オプションサービス契約状態) |
| 5 | SET | `op_mskm_dtl_no_fix = eKK0351B002SCHashFix.get(MSKM_DTL_NO).toString()` // Fixed Global IP submission detail number |
| 6 | IF | `op_svc_cd_fix == 026 (FIXIPAD) AND (op_svc_kei_stat_fix == 910 OR op_svc_kei_stat_fix == 920) AND op_mskm_dtl_no_fix == this.mskm_dtl_no` [OP_SVC_CD_FIXIPAD="026", SVC_KEI_STAT_910="910", SVC_KEI_STAT_920="920"] |
| 7 | SET | `eKK0351A010SCHashList.add(eKK0351A010SCHash)` |
| 8 | SET | `getSameTrnNoFlg = true` // Same processing number found |
| 9 | RETURN | `break` |

####### Block 1.1.1.1.2 - [IF/ELSE] MyHomePage special handling (L9084)

> For MyHomePage option, query ISP agreement before adding to list.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `op_svc_cd == 012 (HP)` (L9084) |
| 2 | SET | `inHashOpSvcKeiIsp = new HashMap()` |
| 3 | SET | `resultHashOpSvcKeiIsp = new HashMap()` |
| 4 | SET | `inHashOpSvcKeiIsp.put(OP_SVC_KEI_NO, ...)` // Option service contract number |
| 5 | SET | `inHashOpSvcKeiIsp.put(GENE_ADD_DTM, ...)` // Generation registration datetime |
| 6 | CALL | `callEKK0361A010SC(param, handle, inHashOpSvcKeiIsp, resultHashOpSvcKeiIsp, FUNC_CODE_1)` // Option SVC <ISP> agreement inquiry |
| 7 | SET | `urlDomain = eKK0361A010SCHash.get(URL_DOMAIN)` |
| 8 | SET | `urlAccount = eKK0361A010SCHash.get(URL_ACCOUNT)` |
| 9 | IF | `!isBlank(urlDomain) AND !isBlank(urlAccount)` (L9099) |
| 10 | SET | `eKK0351A010SCHashList.add(eKK0351A010SCHash)` |
| 11 | SET | `getSameTrnNoFlg = true` |
| 12 | ELSE | `eKK0351A010SCHashList.add(eKK0351A010SCHash); getSameTrnNoFlg = true` |

####### Block 1.1.1.1.3 - [ELSE] Default: Add to list directly (L9105)

> For other option types (Email, MList, IPv6, Dup, FmtCel), add to list directly.

| # | Type | Code |
|---|------|------|
| 1 | ELSE | `eKK0351A010SCHashList.add(eKK0351A010SCHash)` |
| 2 | SET | `getSameTrnNoFlg = true` |

##### Block 1.1.2 - [END] End of option agreement inquiry

###### Block 1.2 - [IF] Equipment-provided service: BBR check (L9122)

> Query equipment-provided service contract list and check for BBR service.

| # | Type | Code |
|---|------|------|
| 1 | SET | `inHashKktk = new HashMap()` // Equipment SVC input hash |
| 2 | SET | `resultHashKktk = new HashMap()` // Equipment SVC result hash |
| 3 | SET | `inHashKktk.put(SVC_KEI_NO, svc_kei_no)` // Service contract number |
| 4 | CALL | `callEKK0341B008SC(param, handle, inHashKktk, resultHashKktk, FUNC_CODE_1)` // Equipment-provided SVC list inquiry (機器提供サービス契約一覧照会) |
| 5 | IF | `0 != statusCode` -> throw CCException |
| 6 | SET | `msgEKK0341B008SCList = resultHashKktk.get(TEMPLATE_ID_EKK0341B022)` |
| 7 | FOR | `i = 0` to `msgEKK0341B008SCList.length` // Iterate equipment contracts |

####### Block 1.2.1 - [IF] BBR service code match (L9133)

> Check if the equipment-provided service is BBR.

| # | Type | Code |
|---|------|------|
| 1 | IF | `tmp_kktk_svc_cd == KKTK_SVC_CD_BBR` [KKTK_SVC_CD_BBR="C014"] |
| 2 | SET | `kk_mskm_dtl_no = eKK0341B008SCHash.get(MSKM_DTL_NO).toString()` // Submission detail number |
| 3 | SET | `kk_kiki_seizo_no = eKK0341B008SCHash.get(KIKI_SEIZO_NO).toString()` // Equipment manufacturing number |
| 4 | SET | `kk_svc_dlre_cd = eKK0341B008SCHash.get(SVC_DLRE_CD).toString()` // Service cancellation reason code |
| 5 | IF | `isBlank(kk_kiki_seizo_no)` -> `continue` |
| 6 | SET | `kk_mskm_dtl_no = shkkaChr(kk_mskm_dtl_no)` |
| 7 | IF | `(IDO_DIV_DSL == ido_div OR IDO_DIV_TEKKYODSL == ido_div) AND kk_mskm_dtl_no == this.mskm_dtl_no` |
| 8 | OR | `IDO_DIV_KYOSEIDSL == ido_div AND SVC_DLRE_CD_KYOSEIDSL == kk_svc_dlre_cd AND kk_mskm_dtl_no == this.mskm_dtl_no` |
| 9 | OR | `IDO_DIV_CANCEL == ido_div AND kk_mskm_dtl_no == this.mskm_dtl_no` |
| 10 | SET | `eKK0341B022SCHash = eKK0341B008SCHash` |
| 11 | SET | `getSameTrnNoFlg = true` |
| 12 | RETURN | `break` |

###### Block 1.3 - [IF] Multi-function router check (L9181)

> Check Takino (multi-function router) status.

| # | Type | Code |
|---|------|------|
| 1 | SET | `takino_flg = checkTakinoRT(handle, param)` |
| 2 | IF | `takino_flg != 0 && takino_flg != 9` |
| 3 | SET | `getSameTrnNoFlg = true` |

###### Block 1.4 - [IF] Inspection cancellation check (L9194)

> Check if this is a cancellation (inspection withdrawal) - SOD may need to be issued.

| # | Type | Code |
|---|------|------|
| 1 | IF | `IDO_DIV_CANCEL == this.ido_div` [IDO_DIV_CANCEL="00008"] |
| 2 | SET | `inEKK0161A010Hash = new HashMap()` |
| 3 | SET | `inEKK0161A010Hash.put(SVC_KEI_UCWK_NO, svc_kei_ucwk_no)` // Service contract detail number |
| 4 | SET | `inEKK0161A010Hash.put(GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm)` // Changed-after generation datetime |
| 5 | CALL | `callEKK0161A010SC(param, handle, inEKK0161A010Hash, retEKK0161A010Hash, FUNC_CODE_1)` // Service contract detail agreement |
| 6 | SET | `svcKeiUcwkStat = eKK0161A010Hash.get(SVC_KEI_UCWK_STAT).toString()` |
| 7 | SET | `isShosaCl = SVC_KEI_STAT_010.equals(svcKeiUcwkStat)` [SVC_KEI_STAT_010="010"] |
| 8 | IF | `isShosaCl` -> `getSameTrnNoFlg = true` |

###### Block 1.5 - [IF] Unified transaction number management (L9231)

> Get or clear the unified transaction number for grouping related cancellations.

| # | Type | Code |
|---|------|------|
| 1 | IF | `getSameTrnNoFlg` (L9231) |
| 2 | SET | `sameTrnNo = new String[1]` |
| 3 | CALL | `getSame_trn_no(param, handle, null, sameTrnNo)` // Get unified transaction number (同一処理番号の取得) |
| 4 | SET | `this.same_trn_no = sameTrnNo[0]` |
| 5 | ELSE | `this.same_trn_no = ""` |

###### Block 1.6 - [IF] FTTH ID cancellation (L9241)

> If not ADSL or is Furetsu, and not mansion private, issue FTTH authentication cancellation SOD.

| # | Type | Code |
|---|------|------|
| 1 | IF | `!SVC_KIND_ADSL.equals(svc_kind) OR PCRST_CD_ADSL_FURETTSU.equals(pcrs_cd)` (L9241) |
| 2 | IF | `!isMansionPrvate()` (L9248) |
| 3 | SET | `this.svc_kei_ucwk_no = new String[1]` |
| 4 | SET | `this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no` |
| 5 | SET | `this.svc_kei_ucwk_gadtm = new String[1]` |
| 6 | SET | `this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm` |
| 7 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_103)` // FTTH Authentication Cancellation (FTTH認証・解約) |
| 8 | IF | `isShosaCl` |
| 9 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_104)` // FTTH Authentication Deletion (FTTH認証・消去) |

###### Block 1.7 - [FOR] Iterate option service cancellation list (L9267)

> Process each option service contract in the list for cancellation SOD generation.

| # | Type | Code |
|---|------|------|
| 1 | FOR | `i = 0` to `eKK0351A010SCHashList.size()` |
| 2 | SET | `op_svc_cd = eKK0351A010SCHash.get(OP_SVC_CD).toString()` |
| 3 | SET | `op_svc_kei_no = eKK0351A010SCHash.get(OP_SVC_KEI_NO).toString()` |
| 4 | SET | `op_gene_add_dtm = eKK0351A010SCHash.get(GENE_ADD_DTM).toString()` |
| 5 | IF | `op_svc_cd == 031 (MLTISE)` [OP_SVC_CD_MLTISE="031"] (L9273) |
| 6 | SET | `oyaSvcKeiUcwkNo = eKK0351A010SCHash.get(SVC_KEI_UCWK_NO).toString()` |
| 7 | IF | `svc_kei_ucwk_no.equals(oyaSvcKeiUcwkNo)` |
| 8 | SET | `this.op_svc_kei_no_mltise = op_svc_kei_no` |
| 9 | SET | `this.op_gadtm_mltise = op_gene_add_dtm` |
| 10 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_145)` // Multi-Selection (static) Cancellation (マルチセクション(静的)・解約) |
| 11 | ELSE | (L9294) // Non-Multi-Selection handling |

####### Block 1.7.1 - [IF] Course-change duplicate prevention (L9297)

> Prevent duplicate SOD generation during course changes.

| # | Type | Code |
|---|------|------|
| 1 | SET | `oyaSvcKeiUcwkNo = eKK0351A010SCHash.get(SVC_KEI_UCWK_NO).toString()` |
| 2 | IF | `(!isNewCourseFlag && targetSvcKeiUcwkCnt < 2) || (isNewCourseFlag && svc_kei_ucwk_no.equals(oyaSvcKeiUcwkNo)) || (isAdChgAddFlag && svc_kei_ucwk_no.equals(oyaSvcKeiUcwkNo))` (L9302) |
| 3 | SET | `opSodMap = new HashMap()` // SOD map |
| 4 | SET | `opSodKihonInfoMap = new HashMap()` // SOD basic info |
| 5 | SET | `opSvcKeiInfoMap = new HashMap()` // Service contract info |
| 6 | SET | `opSvcKeiUcwkInfoMap = new HashMap()` // Service contract detail info |
| 7 | SET | `opOpSvkeiInfoMap = new HashMap()` // Option service contract info |
| 8 | SET | `opSodKihonInfoMap.put(INFO_SYSID, sys_id)` |
| 9 | SET | `opSodKihonInfoMap.put(INFO_IDO_DIV, ido_div)` |
| 10 | SET | `opSvcKeiInfoMap.put(INFO_SVC_KEI_NO, svc_kei_no)` |
| 11 | SET | `opSvcKeiUcwkInfoMap.put(INFO_SVC_KEI_UCWK_NO, svc_kei_ucwk_no)` |
| 12 | SET | `opSvcKeiUcwkInfoMap.put(INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm)` |
| 13 | SET | `opOpSvkeiInfoMap.put(INFO_CHBF_OPSVKEI_NO, op_svc_kei_no)` |
| 14 | SET | `opOpSvkeiInfoMap.put(INFO_CHBF_OPSVKEI_GENE_ADD_DTM, op_gene_add_dtm)` |
| 15 | SET | `opOpSvkeiInfoMap.put(INFO_CHAF_OPSVKEI_NO, op_svc_kei_no)` |
| 16 | SET | `opOpSvkeiInfoMap.put(INFO_CHAF_OPSVKEI_GENE_ADD_DTM, op_gene_add_dtm)` |
| 17 | SET | `opSodMap.put(SOD_KIHON_INFO, opSodKihonInfoMap)` |
| 18 | SET | `opSodMap.put(SVC_KEI_INFO, opSvcKeiInfoMap)` |
| 19 | SET | `opSodMap.put(SVC_KEI_UCWK_INFO, opSvcKeiUcwkInfoMap)` |
| 20 | SET | `opSodMap.put(OPSVKEI_INFO, opOpSvkeiInfoMap)` |
| 21 | CALL | `opSetOdrCtrl(handle, param, fixedText, opSodMap)` // Option setup SOD control |

###### Block 1.8 - [IF] Router connection cancellation (L9322)

> Issue router connection cancellation/deletion SOD when equipment-provided service was found.

| # | Type | Code |
|---|------|------|
| 1 | IF | `eKK0341B022SCHash != null && !isNewCourseFlag && targetSvcKeiUcwkCnt < 2` (L9322) |
| 2 | SET | `this.kktk_svc_kei_no = new String[1]` |
| 3 | SET | `kktk_svc_kei_no[0] = eKK0341B022SCHash.get(KKTK_SVC_KEI_NO).toString()` |
| 4 | SET | `this.kktk_svc_kei_gadtm = new String[1]` |
| 5 | SET | `kktk_svc_kei_gadtm[0] = eKK0341B022SCHash.get(GENE_ADD_DTM).toString()` |
| 6 | SET | `this.taknkiki_model_cd = new String[1]` |
| 7 | SET | `taknkiki_model_cd[0] = eKK0341B022SCHash.get(TAKNKIKI_MODEL_CD).toString()` |
| 8 | SET | `this.kiki_seizo_no = new String[1]` |
| 9 | SET | `kiki_seizo_no[0] = eKK0341B022SCHash.get(KIKI_SEIZO_NO).toString()` |
| 10 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_149)` // Router connection settings (ルータ接続情報・設定) |
| 11 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_150)` // Router connection deletion (ルータ接続情報・消去) |

###### Block 1.9 - [IF] Multi-function router: Router function active (L9342)

> If multi-function router flag is 4 (both router and VA active) and count < 2.

| # | Type | Code |
|---|------|------|
| 1 | IF | `takino_flg == 4 && targetSvcKeiUcwkCnt < 2` (L9342) |
| 2 | CALL | `param = addTakinoSOD(handle, param, ODR_NAIYO_CD_405)` // Multi-function router setup (multi-function router) |

###### Block 1.10 - [IF/ELSE] Multi-function router: Router function cancellation (L9347)

> If multi-function router flag is 3 (simultaneous cancellation).

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `takino_flg == 3 && targetSvcKeiUcwkCnt < 2` (L9347) |
| 2 | CALL | `param = addTakinoSOD(handle, param, ODR_NAIYO_CD_419)` // Multi-function router cancellation (router function) |
| 3 | CALL | `param = addTakinoSOD(handle, param, ODR_NAIYO_CD_420)` // Multi-function router deletion (router function) |

###### Block 1.11 - [END] NET/ADSL block complete

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

---

### Block 2 - [IF] svc_kind branch: MOBILE (svc_kind == "4") (L9366)

> Branch for eo Mobile service cancellation (e-mobile, WiMAX, SpotWiFi, Mail Address).

| # | Type | Code |
|---|------|------|
| 1 | IF | `PCRS_CD_WIFISPOT.equals(pcrs_cd)` [PCRS_CD_WIFISPOT="A30"] (L9383) |
| 2 | SET | `this.same_trn_no = ""` |
| 3 | ELSE-IF | `chgSvcKeiJdg(svc_kei_no)` (L9388) |
| 4 | SET | `sameTrnNo = new String[1]` |
| 5 | CALL | `getSame_trn_no(param, handle, null, sameTrnNo)` |
| 6 | SET | `this.same_trn_no = sameTrnNo[0]` |
| 7 | SET | `ucwkPcrsCd = null` (L9400) |
| 8 | IF | `!PCRS_CD_MAILADDRESS.equals(pcrs_cd)` [PCRS_CD_MAILADDRESS="A61"] (L9403) |
| 9 | SET | `inEKK0161A010Hash = new HashMap()` |
| 10 | SET | `inEKK0161A010Hash.put(SVC_KEI_UCWK_NO, svc_kei_ucwk_no)` |
| 11 | SET | `inEKK0161A010Hash.put(GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm)` |
| 12 | CALL | `callEKK0161A010SC(param, handle, inEKK0161A010Hash, retEKK0161A010Hash, FUNC_CODE_1)` |
| 13 | SET | `ucwkPcrsCd = eKK0161A010Hash.get(PCRS_CD).toString()` |

#### Block 2.1 - [IF] e-mobile specific handling (L9424)

> Special processing for e-mobile service cancellation.

| # | Type | Code |
|---|------|------|
| 1 | IF | `isEmobile()` (L9424) |
| 2 | IF | `!IDO_DIV_CANCEL.equals(ido_div) AND !IDO_DIV_KYOSEIDSL.equals(ido_div)` (L9430) |
| 3 | CALL | `findMobileStartOrderAtKK1041(param, handle, svc_kei_no)` |
| 4 | IF | result > 0 |
| 5 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_313)` // e-mobile Cancellation (e-mobile・解約) |
| 6 | IF | `IDO_DIV_KYOSEIDSLFIX.equals(ido_div)` [IDO_DIV_KYOSEIDSLFIX="00007"] (L9439) |
| 7 | RETURN | `return param` // Forced cancellation confirmation - cancel here |

#### Block 2.2 - [IF] e-mobile option service query (L9444)

> Query option services for e-mobile cancellation.

| # | Type | Code |
|---|------|------|
| 1 | SET | `inHashMltise = new HashMap()` |
| 2 | SET | `inHashMltise.put(SVC_KEI_NO, svc_kei_no)` |
| 3 | CALL | `callEKK0351B002SC(param, handle, inHashMltise, resultHashMltise, FUNC_CODE_1)` |
| 4 | FOR | `i = 0` to `msgEKK0351B002SCList.length` |
| 5 | IF | `op_svc_cd == 011 (EMAIL) OR 012 (HP) OR 032 (MLIST)` (L9457) |
| 6 | SET | `inHashSvcKei = new HashMap()` |
| 7 | SET | `inHashSvcKei.put(OP_SVC_KEI_NO, ...)` |
| 8 | SET | `inHashSvcKei.put(GENE_ADD_DTM, ...)` |
| 9 | CALL | `callEKK0351A010SC(param, handle, inHashSvcKei, resultHashSvcKei, FUNC_CODE_1)` |
| 10 | IF | `SVC_KEI_STAT_920.equals(opSvcKeiStat) AND lastIdoDiv matches "^0000[12]$"` (L9486) |
| 11 | CONTINUE | Skip cancelled records |
| 12 | IF | Movement division matching condition (IDO_DIV_DSL/TEKKYODSL/kyousei/cancel with mskm_dtl_no match) (L9503) |
| 13 | BUILD | opSodMap with SOD basic info, service contract info, service contract detail info, option service contract info |
| 14 | CALL | `opSetOdrCtrl(handle, param, fixedText, opSodMap)` |

#### Block 2.3 - [IF] WiMAX service (L9550)

> WiMAX service cancellation processing including UQ-WiMAX equipment check.

| # | Type | Code |
|---|------|------|
| 1 | IF | `PCRS_CD_WIMAX.equals(ucwkPcrsCd)` [PCRS_CD_WIMAX="A46"] (L9550) |
| 2 | SET | `this.svc_kei_ucwk_no = new String[1]` |
| 3 | SET | `this.svc_kei_ucwk_gadtm = new String[1]` |
| 4 | IF | `PCRS_CD_UQWIMAX_B.equals(pcrs_cd)` [PCRS_CD_UQWIMAX_B="A28"] (L9562) |
| 5 | CALL | `callEKK0341B008SC(param, handle, inHashKktk, resultHashKktk, FUNC_CODE_1)` |
| 6 | SET | `kktk_svc_kei_no[0] = eKK0341B008SCHash.get(KKTK_SVC_KEI_NO).toString()` |
| 7 | SET | `kktk_svc_kei_gadtm[0] = eKK0341B008SCHash.get(GENE_ADD_DTM).toString()` |
| 8 | ELSE | `kktk_svc_kei_no[0] = ""; kktk_svc_kei_gadtm[0] = ""` |
| 9 | IF | `!IDO_DIV_CANCEL.equals(ido_div) AND findZ5OrderAtKK1041(param, handle, svc_kei_no) > 0` (L9593) |
| 10 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_309)` // WiMAX DEV Deletion (WiMAX・DEV消去) |
| 11 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_308)` // WiMAX CUI Deletion (WiMAX・CUI消去) |
| 12 | SET | `isShosaCl = (IDO_DIV_CANCEL == ido_div && SVC_KEI_STAT_010 == this.svc_kei_stat)` (L9603) |
| 13 | IF | `isShosaCl` (L9605) |
| 14 | CALL | `callEKK1081B001SC(... ORDER_SBT_CD_MOBILE, SVC_ODR_CD_WIMAX_KKSHKA_ODR, ODR_HAKKO_JOKEN_CD_KKTK_START_JOKEN, svc_kei_no)` |
| 15 | FOR | `kk1081Map : kk1081List` |
| 16 | IF | `isBlank(sendReqFinDtm)` |
| 17 | CALL | `callEKK1081E010SC(param, handle, FUNC_CD_1, odrHakkoJokenNo, updDtm)` |

#### Block 2.4 - [IF] WiMAX option service query (L9623)

> Query option services for WiMAX cancellation (same pattern as e-mobile).

| # | Type | Code |
|---|------|------|
| 1 | SET | `inHashMltise = new HashMap()` |
| 2 | SET | `inHashMltise.put(SVC_KEI_NO, svc_kei_no)` |
| 3 | CALL | `callEKK0351B002SC(param, handle, inHashMltise, resultHashMltise, FUNC_CODE_1)` |
| 4 | FOR | `i = 0` to `msgEKK0351B002SCList.length` |
| 5 | IF | `op_svc_cd == 011 (EMAIL) OR 012 (HP) OR 032 (MLIST)` |
| 6 | CALL | `callEKK0351A010SC(param, handle, inHashSvcKei, resultHashSvcKei, FUNC_CODE_1)` |
| 7 | IF | Movement division matching condition (L9682) |
| 8 | BUILD | opSodMap + call `opSetOdrCtrl(handle, param, fixedText, opSodMap)` |

#### Block 2.5 - [IF] FreeWiFi / SpotWiFi (L9713)

> WiFi Spot service cancellation processing.

| # | Type | Code |
|---|------|------|
| 1 | IF | `PCRS_CD_FREE_WIFI.equals(ucwkPcrsCd) OR PCRST_CD_WIFISPOT.equals(ucwkPcrsCd)` (L9713) [PCRS_CD_FREE_WIFI="A45"] |
| 2 | SET | `wifiSpotUm = (0 < countUpWiFiSpotSessions(param, handle, sys_id, svc_kei_ucwk_no))` |
| 3 | CALL | `judgeOdrHakkoJoken4WiFiSpot(param, handle, sys_id)` |
| 4 | IF | `wifiSpotUm` (L9728) |
| 5 | SET | `this.svc_kei_ucwk_no = new String[1]; this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no` |
| 6 | SET | `this.svc_kei_ucwk_gadtm = new String[1]; this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm` |
| 7 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_302)` // WiFi Spot Change (Wi-Fiスポット・変更) |
| 8 | ELSE | (L9737) |
| 9 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_303)` // WiFi Spot Deletion (Wi-Fiスポット・消去) |

#### Block 2.6 - [IF] Mail Address service (L9750)

> Mobile mail address option service cancellation.

| # | Type | Code |
|---|------|------|
| 1 | IF | `PCRS_CD_MAILADDRESS.equals(pcrs_cd)` [PCRS_CD_MAILADDRESS="A61"] (L9750) |
| 2 | SET | `inHashMltise = new HashMap()` |
| 3 | SET | `inHashMltise.put(SVC_KEI_NO, svc_kei_no)` |
| 4 | CALL | `callEKK0351B002SC(param, handle, inHashMltise, resultHashMltise, FUNC_CODE_1)` |
| 5 | FOR | `i = 0` to `msgEKK0351B002SCList.length` |
| 6 | IF | `op_svc_cd == 011 (EMAIL) OR 032 (MLIST)` |
| 7 | CALL | `callEKK0351A010SC(param, handle, inHashSvcKei, resultHashSvcKei, FUNC_CODE_1)` |
| 8 | IF | Movement division matching condition (L9792) |
| 9 | BUILD | opSodMap + call `opSetOdrCtrl(handle, param, fixedText, opSodMap)` |

---

### Block 3 - [IF] svc_kind branch: TELEPHONE (svc_kind == "2") (L9843)

> Branch for eo Light Telephone service cancellation including SIP, ENUM, OLS, and number transfer.

| # | Type | Code |
|---|------|------|
| 1 | SET | `this.svc_kei_ucwk_no = new String[1]` |
| 2 | SET | `this.svc_kei_ucwk_gadtm = new String[1]` |
| 3 | SET | `this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no` |
| 4 | SET | `this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm` |
| 5 | CALL | `findZ1OrderHasBeenSentSvcKeiUcwk(param, handle, svc_kei_no, svc_kei_ucwk_no)` |
| 6 | IF | `chgSvcKeiJdg(svc_kei_no)` (L9861) |
| 7 | SET | `sameTrnNo = new String[1]` |
| 8 | CALL | `getSame_trn_no(param, handle, null, sameTrnNo)` |
| 9 | SET | `this.same_trn_no = sameTrnNo[0]` |
| 10 | SET | `inHashUcwk = new HashMap()` |
| 11 | SET | `inHashUcwk.put(SVC_KEI_UCWK_NO, svc_kei_ucwk_no)` |
| 12 | SET | `inHashUcwk.put(GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm)` |
| 13 | CALL | `callEKK0191A010SC(param, handle, inHashUcwk, resultHashUcwk, FUNC_CODE_1)` |
| 14 | SET | `bmpUm = eKK0191A010Hash.get(BMP_UM).toString()` |
| 15 | IF | `isZ1Ordered AND chgSvcKeiJdg(svc_kei_no)` (L9882) |
| 16 | CALL | `getEKK0251B001SC(param, handle, svc_kei_no, FUNC_CODE_1)` |
| 17 | SET | `this.svc_kei_kaisen_ucwk_no = eKK0251B001Hash.get(SVC_KEI_KAISEN_UCWK_NO).toString()` |
| 18 | SET | `this.svc_kei_kaisen_ucwk_gadtm = eKK0251B001Hash.get(GENE_ADD_DTM).toString()` |
| 19 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_204)` // Radius authentication cancellation (Radius認証・解約) |
| 20 | SET | `takino_flg = checkTakinoRT(handle, param)` |
| 21 | SET | `vaTaknkikiModelCd = eKK0191A010Hash.get(VA_TAKNKIKI_MODEL_CD).toString()` |
| 22 | SET | `vaKikiChgNo = eKK0191A010Hash.get(VA_KIKI_CHG_NO).toString()` |
| 23 | SET | `inHashKktk = new HashMap()` |
| 24 | SET | `inHashKktk.put(SVC_KEI_NO, svc_kei_no)` |
| 25 | CALL | `callEKK0341B008SC(param, handle, inHashKktk, resultHashKktk, FUNC_CODE_1)` |
| 26 | // EG Switch path: EKK0341B008_02SC | (L9898) |
| 27 | CALL | `callEKK0341B008_02SC(param, handle, inHashKktk, resultHashKktk, FUNC_CODE_4)` |
| 28 | FOR | `i = 0` to `msgEKK0341B008SCList.length` |
| 29 | SET | `kktkSvcKeiNo = eKK0341B008SCHash.get(KKTK_SVC_KEI_NO).toString()` |
| 30 | SET | `kktkGeneAddDtm = eKK0341B008SCHash.get(GENE_ADD_DTM).toString()` |
| 31 | SET | `vaTaknkikiModelCd = eKK0341B008SCHash.get(TAKNKIKI_MODEL_CD).toString()` |
| 32 | IF | `!isRegalVaKiki(handle, param, eKK0341B008SCHash, vaTaknkikiModelCd, null, ido_div, vaKikiChgNo, kokanBfKiki)` (L9930) |
| 33 | CONTINUE | Skip non-matching VA equipment |
| 34 | IF | `kokanBfKiki != null && !kokanBfKiki.isEmpty()` |
| 35 | SET | `kktkSvcKeiNo, kktkGeneAddDtm, kktkKikiSeizoNo, vaTaknkikiModelCd` from kokanBfKiki |
| 36 | SET | `this.kktk_svc_kei_no = new String[1]` |
| 37 | SET | `this.kktk_svc_kei_no[0] = kktkSvcKeiNo` |
| 38 | SET | `this.kktk_svc_kei_gadtm = new String[1]` |
| 39 | SET | `this.kktk_svc_kei_gadtm[0] = kktkGeneAddDtm` |
| 40 | SET | `this.taknkiki_model_cd = new String[1]` |
| 41 | SET | `this.taknkiki_model_cd[0] = vaTaknkikiModelCd` |
| 42 | SET | `this.kiki_seizo_no = new String[1]` |
| 43 | SET | `this.kiki_seizo_no[0] = kktkKikiSeizoNo` |
| 44 | IF | `takino_flg == 4 && vaTaknkikiModelCd == taknkiki_model_cd_takino` (L9958) |
| 45 | CALL | `param = addTakinoSOD(handle, param, ODR_NAIYO_CD_417)` // Multi-Router active setup |
| 46 | RETURN | `break` |
| 47 | ELSE-IF | `takino_flg == 3 && vaTaknkikiModelCd == taknkiki_model_cd_takino` (L9963) |
| 48 | CALL | `param = addTakinoSOD(handle, param, ODR_NAIYO_CD_421)` // Multi-Router simultaneous cancel |
| 49 | CALL | `param = addTakinoSOD(handle, param, ODR_NAIYO_CD_422)` // Multi-Router deletion |
| 50 | RETURN | `break` |
| 51 | ELSE-IF | `takino_flg == 0` (L9969) |
| 52 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_215)` // OLS Setup/Cancellation |
| 53 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_216)` // OLS Setup/Deletion |
| 54 | RETURN | `break` |

#### Block 3.1 - [IF] Can skip deletion SOD check (L9984)

> Determine if SIP deletion SOD can be skipped based on order settings.

| # | Type | Code |
|---|------|------|
| 1 | SET | `can_skip_delsod = false` |
| 2 | CALL | `callEKK1041B001SC(param, handle, ORDER_SBT_CD_TEL, SVC_ORDER_CD_SIP, null, svc_kei_no, null, null)` |
| 3 | SET | `eKK1041B001HashListtmp = getEKK1041B001result(param)` |
| 4 | FOR | `eKK1041B001Hash : eKK1041B001HashListtmp` |
| 5 | IF | `svc_kei_ucwk_no.equals(svc_kei_ucwk_no_wk)` |
| 6 | IF | `yokyu_sbt_cd == 03 (DSL) OR 08 (DEL)` |
| 7 | SET | `can_skip_delsod = true` |

#### Block 3.2 - [IF] 050 Number Plate option (L10027)

> Process 050 Number Plate option service cancellation.

| # | Type | Code |
|---|------|------|
| 1 | SET | `inHashOp = new HashMap()` |
| 2 | SET | `inHashOp.put(SVC_KEI_UCWK_NO, svc_kei_ucwk_no)` |
| 3 | CALL | `callEKK0351B002SC(param, handle, inHashOp, resultHashOp, FUNC_CODE_1)` |
| 4 | FOR | `i = 0` to `msgList.length` |
| 5 | SET | `op_svc_kei_no = eKK0351B002Hash.get(OP_SVC_KEI_NO).toString()` |
| 6 | SET | `op_svc_cd = eKK0351B002Hash.get(OP_SVC_CD).toString()` |
| 7 | IF | `isZ1Ordered && op_svc_cd == 050 (N050)` (L10039) |
| 8 | CALL | `callEKK0351A010SC(param, handle, inHashOp2, resultHashOp2, FUNC_CODE_1)` |
| 9 | SET | `op_mskm_dtl_no, op_svc_dlre_cd, op_svc_kei_stat` from result |
| 10 | IF | `(SVC_KEI_STAT_910 == op_svc_kei_stat AND (IDO_DIV_DSL/TEKKYODSL matches mskm_dtl_no OR IDO_DIV_KYOSEIDSL matches SVC_DLRE_CD)) OR (IDO_DIV_CANCEL matches mskm_dtl_no)` (L10067) |
| 11 | BUILD | opSodMap + call `opSetOdrCtrl(handle, param, fixedText, opSodMap)` |
| 12 | ELSE-IF | `op_svc_cd == TENSO` (L10091) |
| 13 | CALL | `callEKK0351A010SC(param, handle, inHashOp2, resultHashOp2, FUNC_CODE_1)` |
| 14 | SET | `shosaDslFinCd = eKK0351A010SCHash.get(SHOSA_DSL_FIN_CD).toString()` |
| 15 | IF | `!isZ1Ordered AND !BMP_UM_ARI.equals(bmpUm) AND !SHOSA_DSL_FIN_CD.equals(shosaDslFinCd)` (L10121) |
| 16 | SET | `chbf_svc_kei_ucwk_gene_add_dtm = svc_kei_ucwk_info_Map.get(INFO_CHBF_SVC_KEI_UCWK_GENE_ADD_DTM)` |
| 17 | IF | `!isBlank(chbf_svc_kei_ucwk_gene_add_dtm)` |
| 18 | SET | `this.svc_kei_ucwk_gadtm[0] = chbf_svc_kei_ucwk_gene_add_dtm` |
| 19 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_229)` // SIP Cancellation (SIP・解約) |
| 20 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_230)` // SIP Deletion (SIP・消去) |
| 21 | IF | `!isTajgsTelNo(...) AND isMonaiBmp(...)` (L10142) |
| 22 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_266)` // ENUM Deletion (ENUM消去) |
| 23 | RETURN | `break` |

#### Block 3.3 - [IF] Z1 ordered: SIP and transfer SOD (L10155)

> If Z1 order was processed, issue SIP cancellation and number transfer SOD.

| # | Type | Code |
|---|------|------|
| 1 | IF | `isZ1Ordered` (L10155) |
| 2 | SET | `getTokiOdr = false` |
| 3 | SET | `tokiAddCd = eKK0191A010Hash.get(DSL_PAUSE_TOKI_ADD_CD).toString()` |
| 4 | SET | `tokiSbt = eKK0191A010Hash.get(DSL_PAUSE_TOKI_SBT_CD).toString()` |
| 5 | CALL | `callEKK1041B001SC(param, handle, ORDER_SBT_CD_TEL, SVC_ORDER_CD_SIP, null, svc_kei_no, null, null)` |
| 6 | SET | `eKK1041B001Hash = getEKK1041B001result(param)` |
| 7 | FOR | `eKK1041B001Hash : eKK1041B001Hash` |
| 8 | IF | `svc_kei_ucwk_no.equals(svc_kei_ucwk_no_wk)` |
| 9 | IF | `yokyu_sbt_cd == 14 (TOKI) AND !ITNTOKI_ADD_CD_PAUSE.equals(tokiAddCd) AND "231".equals(tokiSbt)` |
| 10 | SET | `getTokiOdr = true` |
| 11 | IF | `!getTokiOdr` (L10202) |
| 12 | IF | `!can_skip_delsod` (L10205) |
| 13 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_229)` // SIP Cancellation |
| 14 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_230)` // SIP Deletion |
| 15 | IF | `!BMP_UM_ARI.equals(bmpUm) AND !isTajgsTelNo(...) AND isMonaiBmp(...) AND !can_skip_delsod` (L10239) |
| 16 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_266)` // ENUM Deletion |
| 17 | CALL | `param = addTokiSOD(handle, param, this.ido_div, null)` // Number transfer registration (転送токі登録) |
| 18 | IF | `!can_skip_delsod` (L10255) |
| 19 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_252)` // Emergency notification cancellation (緊急通報・消去) |

#### Block 3.4 - [END] Telephone block complete

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

---

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| SOD | Acronym | Service Order Data - the core data structure for telecom service order issuance (サービスオーダデータ) |
| SOD_KIHON_INFO | Field | SOD basic info map key containing system ID and movement division |
| SVC_KEI_INFO | Field | Service contract info map key |
| SVC_KEI_UCWK_INFO | Field | Service contract detail info map key |
| OPSVKEI_INFO | Field | Option service contract info map key |
| svc_kei_no | Field | Service contract number (サービス契約番号) - internal tracking ID for service contracts |
| svc_kei_ucwk_no | Field | Service contract detail number (サービス契約内線番号) - detail-level tracking ID for service contract lines |
| svc_kei_ucwk_gadtm | Field | Service contract detail generation registration datetime (サービス契約内線世代登録年月日时分秒) |
| chaf_svc_kei_ucwk_gene_add_dtm | Field | Changed-after service contract detail generation registration datetime (変更後サービス契約内線世代登録年月日时分秒) |
| sys_id | Field | System ID - identifies the eo customer system |
| ido_div | Field | Movement division (異動区分) - class of contract movement: 00005=cancellation, 00064=forced cancellation, 00008=cancel, etc. |
| svc_kind | Field | Service type code (サービス種別コード) - "1"=Network, "2"=Telephone, "4"=Mobile, "5"=ADSL |
| pcrs_cd | Field | Price course code (料金コースコード) - identifies the specific service rate plan |
| op_svc_cd | Field | Option service code (オプションサービスコード) - identifies option services like Email(011), HP(012), Multi-Selection(031), etc. |
| mskm_dtl_no | Field | Submission detail number (申込明細番号) - matches against cancellation requests to identify matching detail records |
| same_trn_no | Field | Unified transaction number (同一処理番号) - groups related cancellations as one atomic operation |
| mae_recode_ch_svc_kei_no | Field | Previous record changed service contract number (完了したもの退避 - backed up previous service contract number) |
| takeo_flg | Field | Takino (multi-function router) flag - "0"=no router, "3"=simultaneous cancel, "4"=both router and VA active |
| op_svc_kei_no | Field | Option service contract number (オプションサービス契約番号) |
| op_gene_add_dtm | Field | Option service contract generation registration datetime |
| op_svc_kei_stat | Field | Option service contract status (オプションサービス契約状態) - e.g., "910"=cancelled, "920"=cancelled (cancel) |
| kk_mskm_dtl_no | Field | Equipment-provided service submission detail number (機器提供サービス申込明細番号) |
| kk_kiki_seizo_no | Field | Equipment manufacturing number (機器製造番号) |
| kktk_svc_kei_no | Field | Equipment-provided service contract number (機器提供サービス契約番号) |
| taknkiki_model_cd | Field | Home equipment model code (宅内機器型式コード) |
| kiki_seizo_no | Field | Equipment manufacturing number (機器製造番号) |
| svc_kei_kaisen_ucwk_no | Field | Service line detail number (サービス回線内線番号) |
| bmpUm | Field | Number porting work presence indicator (番पो工事事業有無) |
| isShosaCl | Field | Inspection cancellation flag (照会取消フラグ) - true when contract detail status is "010" (received) during cancellation |
| isZ1Ordered | Field | Z1 order has been sent flag - indicates if the Z1 telephone order was already processed |
| getTokiOdr | Field | Transfer tokii order flag - true when transfer tokii registration SOD should be skipped |
| can_skip_delsod | Field | Can skip deletion SOD flag - true when order settings indicate 03 (cancellation) or 08 (deletion) |
| isNewCourseFlag | Field | New course flag (新コースフラグ) - indicates if new authId exists from course change (SOD品向障害No.36) |
| targetSvcKeiUcwkCnt | Field | Target service contract detail count (対象サービス契約内線数) - used for duplicate prevention during course changes |
| isAdChgAddFlag | Field | Address change addition flag (住所変更に伴い加えられた内線のフラグ) - indicates detail was added due to address change |
| WiFi Spot Um | Field | WiFi Spot existence flag (Wi-Fiスポット存在フラグ) |
| jdgSvcKind | Method | Service type judgment method (サービス種別判定メソッド) - determines svc_kind from service data |
| jdgSvcKind_PcrsCd | Method | (Deprecated) Service type judgment by price course code |
| chkkaMap | Method | Map deep-copy utility method (マップ深写メソッド) |
| shkkaChr | Method | String null-to-empty conversion (nullの場合に空文字初期化) |
| chkkaMap | Method | Map deep-copy utility method |
| isBlank | Method | Checks if string is null or empty |
| isEmobile | Method | Judges if service is e-mobile based on pcrs_cd |
| isMansionPrvate | Method | Judges if customer is mansion private type |
| isRegalVaKiki | Method | Judges if VA (Voice Access) home equipment model code matches |
| isMonaiBmp | Method | Judges if number porting is available |
| isTajgsTelNo | Method | Judges if telephone number belongs to the company |
| cnclOdrCtrl | Method | Cancellation order control (解約オーダ制御) - caller of dslOdrCtrl |
| hakkoSOD | Method | Order issuance SOD (発行SOD) - caller of dslOdrCtrl |
| ksiDslFixOdrCtrl | Method | Cancellation order fix control (解約オーダ修正制御) - caller of dslOdrCtrl |
| ksiDslOdrCtrl | Method | Cancellation order control (解約オーダ制御) - caller of dslOdrCtrl |
| FTTH | Business term | Fiber To The Home - fiber-optic broadband service |
| eo Light Network | Business term | FTTH/Broadband service (eo光ネット) |
| eoADSL | Business term | eo ADSL broadband service |
| eo Mobile | Business term | Mobile data service (eoモバイル) including e-mobile, WiMAX, SpotWiFi |
| eo Light Telephone | Business term | Telephone service (eo光電話) |
| BBR | Business term | Equipment-provided broadband router service (機器提供サービスBBR) |
| OLS | Business term | Online login service - authentication system for telephone service |
| SIP | Business term | Session Initiation Protocol - VoIP signaling protocol for telephone service cancellation |
| ENUM | Business term | E.164 Number Mapping - DNS-based telephone number to URI mapping for ENUM deletion |
| WiMAX | Business term | Wireless broadband service technology (UQ WiMAX) |
| e-mobile | Business term | 3G mobile data service operated by KDDI |
| SpotWiFi | Business term | WiFi Spot service (Wi-Fiスポット) - public WiFi access |
| Multi-Selection | Business term | Option service allowing multiple simultaneous service subscriptions (マルチセクション) |
| MyHomePage | Business term | Customer portal homepage service (Myホームページ) |
| Number Porting (numport) | Business term | 電話番号ポータビリティ - ability to keep telephone number when switching providers |
| Transfer Tokii (転送токі) | Business term | Number transfer registration - processes telephone number porting to a new carrier |
| Forced Cancellation (強制解約) | Business term | Contract cancellation initiated by the provider (IDO_DIV_KYOSEIDSL = "00064") |
| Inspection Cancellation (照会取消) | Business term | Cancellation of a previously pending service contract (IDO_DIV_CANCEL = "00008") |
| KK_T_OP_SVCKEI | Database | Option service contract table - stores option service contract records |
| KK_T_SVCKEI_UCWK | Database | Service contract detail table - stores service contract detail records |
| KK_T_KKTK_SVCKEI | Database | Equipment-provided service contract table - stores equipment service records |
| KK_T_ODR_SET | Database | Order settings table - stores order issuance settings and conditions |
| KK_T_ODR_HAKKO_JOKEN | Database | Order issuance condition table - stores conditions for order issuance |
| KK_T_SVCKEI_KAISEN | Database | Service line detail table - stores service line detail records |
| KK_T_SVCKEI_UCWK_TEL | Database | Telephone service contract detail table - stores telephone-specific contract details |
| KK_T_OP_SVCKEI_ISP | Database | Option service contract <ISP> table - stores ISP-specific option service records |
| IDO_DIV_DSL | Constant | Movement division "00005" - cancellation (解約) |
| IDO_DIV_TEKKYODSL | Constant | Movement division "00006" - withdrawal (撤去(解約)) |
| IDO_DIV_KYOSEIDSL | Constant | Movement division "00064" - forced cancellation (強制解約) |
| IDO_DIV_KYOSEIDSLFIX | Constant | Movement division "00007" - forced cancellation confirmation (強制解約確定) |
| IDO_DIV_CANCEL | Constant | Movement division "00008" - cancel (キャンセル) |
| IDO_DIV_OPSETTE | Constant | Movement division "00031" - option setup (オプション設定) |
| ODR_NAIYO_CD_103 | Constant | FTTH Authentication Cancellation (FTTH認証・解約) |
| ODR_NAIYO_CD_104 | Constant | FTTH Authentication Deletion (FTTH認証・消去) |
| ODR_NAIYO_CD_204 | Constant | Radius Authentication Cancellation (Radius認証・解約) |
| ODR_NAIYO_CD_215 | Constant | OLS Setup/Cancellation (OLS設定・解約) |
| ODR_NAIYO_CD_216 | Constant | OLS Setup/Deletion (OLS設定・消去) |
| ODR_NAIYO_CD_229 | Constant | SIP Cancellation (SIP・解約) |
| ODR_NAIYO_CD_230 | Constant | SIP Deletion (SIP・消去) |
| ODR_NAIYO_CD_252 | Constant | Emergency Notification Deletion (緊急通報・消去) |
| ODR_NAIYO_CD_266 | Constant | ENUM Deletion SOD (ENUM消去) |
| ODR_NAIYO_CD_302 | Constant | WiFi Spot Change (Wi-Fiスポット・変更) |
| ODR_NAIYO_CD_303 | Constant | WiFi Spot Deletion (Wi-Fiスポット・消去) |
| ODR_NAIYO_CD_308 | Constant | WiMAX CUI Deletion (WiMAX・CUI消去) |
| ODR_NAIYO_CD_309 | Constant | WiMAX DEV Deletion (WiMAX・DEV消去) |
| ODR_NAIYO_CD_313 | Constant | e-mobile Cancellation (e-mobile・解約) |
| ODR_NAIYO_CD_145 | Constant | Multi-Selection (static) Cancellation (マルチセクション(静的)・解約) |
| ODR_NAIYO_CD_149 | Constant | Router Connection Settings (ルータ接続情報・設定) |
| ODR_NAIYO_CD_150 | Constant | Router Connection Deletion (ルータ接続情報・消去) |
| ODR_NAIYO_CD_405 | Constant | Multi-Function Router Setup - Router function (多功能ルータ設定・ルータ機能) |
| ODR_NAIYO_CD_419 | Constant | Multi-Function Router Cancellation - Router function (多功能ルータ解約・ルータ機能) |
| ODR_NAIYO_CD_420 | Constant | Multi-Function Router Deletion - Router function (多功能ルータ消去・ルータ機能) |
| ODR_NAIYO_CD_417 | Constant | Multi-Router Active Setup (多功能ルータ有効) |
| ODR_NAIYO_CD_421 | Constant | Multi-Router Simultaneous Cancellation (多功能ルータ同時解約) |
| ODR_NAIYO_CD_422 | Constant | Multi-Router Deletion (多功能ルータ消去) |
| FUNC_CODE_1 | Constant | Function code "1" |
| FUNC_CODE_4 | Constant | Function code "4" |

"""

f.close()
print("Main document written successfully")
"""

with open("/tmp/gen_doc.py", "w") as f:
    f.write(code)
"