## 6. Per-Branch Detail Blocks

### Phase 4: State Comparison

**Block 3** -- [SET] State Variables (L11820)

| # | Type | Code |
|---|------|------|
| 1 | SET | selectOdrNaiyoCd = "" (selected order content code) |
| 2 | SET | opsvkeiStatBefore = before-option status from chbfEKK0351A010SCHash |
| 3 | SET | opsvkeiStatAfter = after-option status from chafEKK0351A010SCHash |
| 4 | SET | isNewOpsvkei = isBlank(chbf_opsvkei_no) && !isBlank(chaf_opsvkei_no) (new option) |
| 5 | SET | isNewOpsvkei &= !SVC_KEI_STAT_920.equals(opsvkeiStatAfter) (exclude cancelled [KT1-2013-0000105]) |
| 6 | SET | isDslOpsvkei = status is 910 or 920 (disconnected/cancelled) |
| 7 | SET | isShosaCl = IDO_DIV_CANCEL && status is 010 (inspection cancellation) |
| 8 | SET | isKaihkOpsvkei = status transition 910/920 -> 100/020/030 (recovered) |
| 9 | SET | isChgOpsvkei = status same 100/020/030 before and after (modified) |

---

### Phase 5: Email Dispatch (OP_SVC_CD_EMAIL)

**Block 4** -- [IF] `OP_SVC_CD_EMAIL.equals(opSvcCd)` (L11834)

**Block 4.1** -- [SET] Key Info (L11837)

| # | Type | Code |
|---|------|------|
| 1 | SET | this.op_svc_kei_no_ml = chaf_opsvkei_no |
| 2 | SET | this.op_gadtm_ml = chaf_opsvkei_gene_add_dtm |
| 3 | SET | this.mlad = MLAD from chafEKK0361A010SCHash |

**Block 4.1.1** -- [IF] `isNewOpsvkei` (Email + New Option)

| # | Type | Code |
|---|------|------|
| 1 | IF | chgOpsvKeiJdg(...) && 0 < sameTrnJdg(...) (real change + has shared txn) |
| 2 | CALL | getSame_trn_no(param, handle, null, sameTrnNo) |
| 3 | IF | chgOpsvKeiJdg(...) (before/after differ) |
| 4 | SET | set priority HIGH in work map [OM-2015-0001453] |
| 5 | CALL | addSOD(handle, param, ODR_NAIYO_CD_108) (Email registration) |
| 6 | SET | restore priority |

**Block 4.1.2** -- [ELSE-IF] `isDslOpsvkei` (Email + Disconnected)

| # | Type | Code |
|---|------|------|
| 1 | IF | ido_div NOT in DSL/TEKKYO/kyosei/forced cancel |
| 2 | SET | this.same_trn_no = "" (clear) |
| 3 | CALL | addSOD(handle, param, ODR_NAIYO_CD_116) (Email cancellation) |
| 4 | IF | isShosaCl |
| 5 | CALL | addSOD(handle, param, ODR_NAIYO_CD_118) (Email deletion) |

**Block 4.1.3** -- [ELSE-IF] `isKaihkOpsvkei` (Email + Recovered)

| # | Type | Code |
|---|------|------|
| 1 | SET | this.same_trn_no = "" |
| 2 | CALL | addSOD(handle, param, ODR_NAIYO_CD_120) (Email recovery) |

**Block 4.1.4** -- [ELSE-IF] `isChgOpsvkei` (Email + Modified)

| # | Type | Code |
|---|------|------|
| 1 | IF | chgOpsvKeiJdg(...) && 0 < sameTrnJdg(...) (has shared txn) |
| 2 | IF | chgOpsvKeiJdg(...) (before/after differ) |
| 3 | SET | chbfMlad = before mail addr, chafMlad = after mail addr |
| 4 | IF | chbfMlad != chafMlad && both not blank (mail address changed) |
| 5 | SET | priority LOW in work map [ANK-3227-00-00] |
| 6 | CALL | addSOD(handle, param, ODR_NAIYO_CD_117) (Email cancellation w/schedule) |
| 7 | CALL | addSOD(handle, param, ODR_NAIYO_CD_119) (Email deletion w/schedule) |
| 8 | SET | priority HIGH in work map |
| 9 | CALL | addSOD(handle, param, ODR_NAIYO_CD_108) (Email registration) |
| 10 | SET | restore priority |

**Block 4.2** -- [SET] Sub-option Service Codes (L11915)

| # | Type | Code |
|---|------|------|
| 1 | SET | chafsbopSvcCd = chafEKK0401A010SCHash.get(SBOP_SVC_CD) |
| 2 | SET | isNewSbopkei = isBlank(chbf_sbopsvkei_no) && !isBlank(chaf_sbopsvkei_no) |
| 3 | SET | isDslSbopkei = status transitions to 910/920 |
| 4 | SET | isSbopkeiStatNotChg = before and after status same |

**Block 4.2.1** -- [IF] Virus check new? `isNewSbopkei && SBOP_SVC_CD_VIRUS.equals(chafsbopSvcCd)`

| # | Type | Code |
|---|------|------|
| 1 | SET | priority HIGH |
| 2 | CALL | addSOD(handle, param, ODR_NAIYO_CD_114) (Email + VirusCheck registration) |
| 3 | SET | restore priority |

**Block 4.2.2** -- [ELSE-IF] Virus check disconnected? `VIRUS && isDslSbopkei`

| # | Type | Code |
|---|------|------|
| 1 | SET | priority HIGH |
| 2 | SET | this.sbop_svckeino_mlvirus = chbf_sbopsvkei_no |
| 3 | CALL | addSOD(handle, param, ODR_NAIYO_CD_115) (Email + VirusCheck cancellation) |
| 4 | SET | restore priority |

**Block 4.2.3** -- [ELSE-IF] Mailbox capacity? `MLCAPA && (isNewSbopkei || isDslSbopkei)`

| # | Type | Code |
|---|------|------|
| 1 | SET | priority HIGH |
| 2 | CALL | addSOD(handle, param, ODR_NAIYO_CD_113) (Email + Mailbox capacity change) |
| 3 | SET | restore priority |

**Block 4.2.4** -- [ELSE-IF] Capacity differs? `isSbopkeiStatNotChg && MLCAPA`

| # | Type | Code |
|---|------|------|
| 1 | SET | chbfCapa = before capacity, chafCapa = after capacity |
| 2 | IF | chbfCapa != chafCapa |
| 3 | SET | priority HIGH |
| 4 | CALL | addSOD(handle, param, ODR_NAIYO_CD_113) (Mailbox capacity change) |
| 5 | SET | restore priority |

**Block 4.2.5** -- [ELSE-IF] Alias new? `isNewSbopkei && SBOP_SVC_CD_ALIAS.equals(chafsbopSvcCd)`

| # | Type | Code |
|---|------|------|
| 1 | SET | priority HIGH |
| 2 | CALL | addSOD(handle, param, ODR_NAIYO_CD_110) (Email + Alias registration) |
| 3 | SET | restore priority |

**Block 4.2.6** -- [ELSE-IF] Alias disconnected? `ALIAS && isDslSbopkei`

| # | Type | Code |
|---|------|------|
| 1 | SET | priority HIGH |
| 2 | CALL | addSOD(handle, param, ODR_NAIYO_CD_112) (Email + Alias cancellation) |
| 3 | SET | restore priority |

**Block 4.2.7** -- [ELSE-IF] Alias differs? `isSbopkeiStatNotChg && ALIAS`

| # | Type | Code |
|---|------|------|
| 1 | SET | chbfAlias = before alias, chafAlias = after alias |
| 2 | IF | chbfAlias != chafAlias |
| 3 | SET | priority HIGH |
| 4 | CALL | addSOD(handle, param, ODR_NAIYO_CD_111) (Email + Alias change) |
| 5 | SET | restore priority |

---

### Phase 6: Home Page Dispatch (OP_SVC_CD_HP)

**Block 5** -- [IF] `OP_SVC_CD_HP.equals(opSvcCd)` (L12084)

| # | Type | Code |
|---|------|------|
| 1 | SET | this.op_svc_kei_no_hp = chaf_opsvkei_no |
| 2 | SET | this.op_gadtm_hp = chaf_opsvkei_gene_add_dtm |
| 3 | IF | isNewOpsvkei && URL configured |
| 4 | IF | chgOpsvKeiJdg(...) && 0 < sameTrnJdg(...) |
| 5 | CALL | addSOD(handle, param, ODR_NAIYO_CD_121) (WEB registration) |
| 6 | ELSE-IF | isDslOpsvkei && URL configured |
| 7 | IF | IDO_DIV_OPSETTE.equals(ido_div) |
| 8 | CALL | addSOD(handle, param, ODR_NAIYO_CD_126) (WEB cancellation) |
| 9 | IF | isShosaCl |
| 10 | CALL | addSOD(handle, param, ODR_NAIYO_CD_127) (WEB deletion) |
| 11 | ELSE-IF | isKaihkOpsvkei && URL configured |
| 12 | CALL | addSOD(handle, param, ODR_NAIYO_CD_128) (WEB recovery) |
| 13 | ELSE-IF | isChgOpsvkei |
| 14 | IF | URL account changed |
| 15 | CALL | addSOD(handle, param, ODR_NAIYO_CD_126) (WEB cancellation) |
| 16 | CALL | addSOD(handle, param, ODR_NAIYO_CD_127) (WEB deletion) |
| 17 | CALL | addSOD(handle, param, ODR_NAIYO_CD_121) (WEB registration) |

**Block 5.5** -- [IF] Capacity change? (OM-2014-0000880, L12202)

| # | Type | Code |
|---|------|------|
| 1 | IF | both chbf/chaf ISP hashes exist |
| 2 | SET | chbfCapa = before capacity, chafCapa = after capacity |
| 3 | IF | isHakkoSod && both NOT blank && differ |
| 4 | CALL | addSOD(handle, param, ODR_NAIYO_CD_123) (Home page capacity change) |

---

### Phase 7: M-List Dispatch (OP_SVC_CD_MLIST)

**Block 6** -- [IF] `OP_SVC_CD_MLIST.equals(opSvcCd)` (L12401)

| # | Type | Code |
|---|------|------|
| 1 | IF | isNewOpsvkei |
| 2 | SET | this.same_trn_no = "" |
| 3 | CALL | addSOD(handle, param, ODR_NAIYO_CD_129) (M-List registration) |
| 4 | ELSE-IF | isDslOpsvkei |
| 5 | IF | ido_div NOT in DSL/TEKKYO/kyosei/forced cancel |
| 6 | SET | this.same_trn_no = "" |
| 7 | CALL | addSOD(handle, param, ODR_NAIYO_CD_131) (M-List cancellation) |
| 8 | IF | isShosaCl |
| 9 | CALL | addSOD(handle, param, ODR_NAIYO_CD_132) (M-List deletion) |
| 10 | ELSE-IF | isKaihkOpsvkei |
| 11 | CALL | addSOD(handle, param, ODR_NAIYO_CD_133) (M-List recovery) |

---

### Phase 8: Fixed IP Dispatch (OP_SVC_CD_FIXIPAD)

**Block 7** -- [IF] `OP_SVC_CD_FIXIPAD.equals(opSvcCd)` (L12499)

| # | Type | Code |
|---|------|------|
| 1 | SET | searchSvcKeiUcwk(handle, param, svc_kei_ucwk_no, null) |
| 2 | SET | this.svc_kei_ucwk_no[0] = retHash.get(SVC_KEI_UCWK_NO) |
| 3 | SET | this.op_svc_kei_no_fixipad = chaf_opsvkei_no |
| 4 | CALL | getOldVrsbIdgSvcDtlCd(handle, param, svc_kei_no, svc_kei_ucwk_no[0], pplan_cd) |
| 5 | IF | isBlank(chbf_opsvkei_no) (New Fixed IP) |
| 6 | CALL | addSOD(handle, param, ODR_NAIYO_CD_152) (Fixed IP registration) |
| 7 | ELSE-IF | 910 or 920 after (Disconnected) |
| 8 | IF | svc_kei_ucwk_stat 910/920 (contract also disconnected) |
| 9 | SET | (no SOD emitted -- auth already cancelled) |
| 10 | ELSE | Call pauseJdg, getSame_trn_no |
| 11 | IF | PAUSE_JDG_CD_1 (suspended) |
| 12 | CALL | addSOD(handle, param, ODR_NAIYO_CD_107) (FTTH auth suspension cancellation) |
| 13 | CALL | addSOD(handle, param, ODR_NAIYO_CD_154) (Fixed IP cancellation) |
| 14 | CALL | addSOD(handle, param, ODR_NAIYO_CD_104) (FTTH auth deletion) |
| 15 | CALL | addSOD(handle, param, ODR_NAIYO_CD_101) (FTTH registration) |
| 16 | CALL | addSOD(handle, param, ODR_NAIYO_CD_106) (FTTH auth temporary suspension) |
| 17 | ELSE | PAUSE_JDG_CD_0 (not suspended) |
| 18 | CALL | addSOD(handle, param, ODR_NAIYO_CD_154) (Fixed IP cancellation) |
| 19 | CALL | addSOD(handle, param, ODR_NAIYO_CD_104) (FTTH auth deletion) |
| 20 | CALL | addSOD(handle, param, ODR_NAIYO_CD_101) (FTTH registration) |
| 21 | ELSE-IF | 910 before AND 100 after (Recovered) |
| 22 | CALL | addSOD(handle, param, ODR_NAIYO_CD_153) (Fixed IP recovery) |

---

### Phase 9: Multi-Session Dispatch (OP_SVC_CD_MLTISE)

**Block 8** -- [IF] `OP_SVC_CD_MLTISE.equals(opSvcCd)` (L12680)

| # | Type | Code |
|---|------|------|
| 1 | SET | this.op_svc_kei_no_mltise = chaf_opsvkei_no |
| 2 | CALL | callEKK0351B002SC(param, handle, inHashMltise, resultHashMltise, FUNC_CODE_1) |
| 3 | SET | fixipadAri = false |
| 4 | FOR | msgList[i] -- check each option contract status |
| 5 | IF | isAddSodTrgtStat(op_svc_kei_stat) |
| 6 | SET | fixipadAri = true |
| 7 | IF | fixipadAri (Fixed IP exists -> static multi-session) |
| 8 | IF | isNewOpsvkei |
| 9 | CALL | addSOD(handle, param, ODR_NAIYO_CD_144) (Static multi-session registration) |
| 10 | ELSE-IF | isDslOpsvkei |
| 11 | CALL | pauseJdg(param, handle, null, svc_kei_no, pause_jdg_cd) |
| 12 | IF | PAUSE_JDG_CD_1 (suspended) |
| 13 | CALL | addSOD(handle, param, ODR_NAIYO_CD_107) (FTTH auth suspension cancellation) |
| 14 | CALL | addSOD(handle, param, ODR_NAIYO_CD_145) (Static multi-session cancellation) |
| 15 | CALL | addSOD(handle, param, ODR_NAIYO_CD_106) (FTTH auth temporary suspension) |
| 16 | ELSE | PAUSE_JDG_CD_0 (not suspended) |
| 17 | CALL | addSOD(handle, param, ODR_NAIYO_CD_145) (Static multi-session cancellation) |
| 18 | ELSE-IF | isKaihkOpsvkei |
| 19 | CALL | addSOD(handle, param, ODR_NAIYO_CD_161) (Static multi-session recovery) |
| 20 | ELSE-IF | isChgOpsvkei |
| 21 | CALL | addSOD(handle, param, ODR_NAIYO_CD_162) (Static multi-session session count change) |
| 22 | ELSE | No Fixed IP (dynamic multi-session) |
| 23 | CALL | callEKK0161B004SC -- fetch service contract detail |
| 24 | SET | retHash = takeCurrentSvcKeiUcwk(resultHashUcwk, svc_kei_ucwk_no) |
| 25 | IF | isNewOpsvkei |
| 26 | CALL | addSOD(handle, param, ODR_NAIYO_CD_142) (Dynamic multi-session registration) |
| 27 | ELSE-IF | isDslOpsvkei |
| 28 | CALL | pauseJdg(...) |
| 29 | IF | PAUSE_JDG_CD_1 (suspended) |
| 30 | CALL | addSOD(handle, param, ODR_NAIYO_CD_107) (FTTH auth suspension cancellation) |
| 31 | CALL | addSOD(handle, param, ODR_NAIYO_CD_143) (Dynamic multi-session cancellation) |
| 32 | CALL | addSOD(handle, param, ODR_NAIYO_CD_106) (FTTH auth temporary suspension) |
| 33 | ELSE | PAUSE_JDG_CD_0 |
| 34 | CALL | addSOD(handle, param, ODR_NAIYO_CD_143) (Dynamic multi-session cancellation) |
| 35 | ELSE-IF | isKaihkOpsvkei |
| 36 | CALL | addSOD(handle, param, ODR_NAIYO_CD_142) (Dynamic multi-session registration) |
| 37 | ELSE-IF | isChgOpsvkei |
| 38 | CALL | getSame_trn_no(param, handle, null, sameTrnNo) |
| 39 | CALL | addSOD(handle, param, ODR_NAIYO_CD_143) (Dynamic multi-session cancellation) |
| 40 | CALL | addSOD(handle, param, ODR_NAIYO_CD_142) (Dynamic multi-session registration) |

---

### Phase 10: Dial-up Dispatch (OP_SVC_CD_DUP)

**Block 9** -- [IF] `OP_SVC_CD_DUP.equals(opSvcCd)` (L12923)

| # | Type | Code |
|---|------|------|
| 1 | CALL | callEKK0161B004SC -- fetch service contract detail |
| 2 | SET | op_svc_kei_no_dial = chaf_opsvkei_no |
| 3 | IF | isNewOpsvkei |
| 4 | CALL | addSOD(handle, param, ODR_NAIYO_CD_134) (Dial-up registration) |
| 5 | ELSE-IF | isDslOpsvkei |
| 6 | IF | ido_div NOT in DSL/TEKKYO/kyosei/cancel |
| 7 | CALL | getSame_trn_no(param, handle, null, sameTrnNo) |
| 8 | CALL | addSOD(handle, param, ODR_NAIYO_CD_137) (Dial-up cancellation) |
| 9 | CALL | addSOD(handle, param, ODR_NAIYO_CD_138) (Dial-up deletion) |
| 10 | ELSE-IF | isKaihkOpsvkei |
| 11 | CALL | addSOD(handle, param, ODR_NAIYO_CD_134) (Dial-up recovery) |
| 12 | ELSE-IF | isChgOpsvkei |
| 13 | CALL | addSOD(handle, param, ODR_NAIYO_CD_136) (Dial-up plan change) |

---

### Phase 11: Format Cell Dispatch (OP_SVC_CD_FMTCEL)

**Block 10** -- [IF] `OP_SVC_CD_FMTCEL.equals(opSvcCd)` (L13022)

| # | Type | Code |
|---|------|------|
| 1 | SET | this.op_svc_kei_no_fmtcel = chaf_opsvkei_no |
| 2 | IF | isBlank(chbf_opsvkei_no) (New) |
| 3 | CALL | addSOD(handle, param, ODR_NAIYO_CD_164) (Format Cell registration) |
| 4 | ELSE-IF | 910 or 920 after (Disconnected) |
| 5 | IF | ido_div NOT in DSL/TEKKYO/kyosei/cancel |
| 6 | CALL | getSame_trn_no(param, handle, null, sameTrnNo) |
| 7 | CALL | addSOD(handle, param, ODR_NAIYO_CD_166) (Format Cell cancellation) |
| 8 | CALL | addSOD(handle, param, ODR_NAIYO_CD_167) (Format Cell deletion) |
| 9 | ELSE-IF | 910 before AND 100 after (Recovered) |
| 10 | CALL | addSOD(handle, param, ODR_NAIYO_CD_164) (Format Cell recovery) |

---

### Phase 12: Z1 Order Count Gate

**Block 11** -- [SET] (L13052)

| # | Type | Code |
|---|------|------|
| 1 | CALL | nOrderedZ1 = findZ1OrderAtKK1041SvcKeiUcwk(param, handle, svc_kei_no, svc_kei_ucwk_no) |
| 2 | SET | isZ1Ordered = 4 <= nOrderedZ1 |

**Block 12** -- [SET] Equipment Serial Number Check (L13057)

| # | Type | Code |
|---|------|------|
| 1 | SET | isKikiSeizoNoCheckResult = false |
| 2 | IF | isExecuteKikiSeizoNoCheck(handle, param) |
| 3 | CALL | isKikiSeizoNoCheckResult = isKikiSeizoNoCheck(handle, param, svc_kei_no, svc_kei_ucwk_no) |

---

### Phase 13: Call Forwarding Dispatch (OP_SVC_CD_TENSO)

**Block 13** -- [IF] `OP_SVC_CD_TENSO.equals(opSvcCd) && isZ1Ordered` (L13135)

| # | Type | Code |
|---|------|------|
| 1 | SET | this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no |
| 2 | CALL | getSame_trn_no(param, handle, null, sameTrnNo) |
| 3 | IF | chafOpSvcKeiStat NOT 910/920 (not disconnected) |
| 4 | IF | isBmpNon && 4 > nOrderedZ1 (non-portable + Z1 not processed) |
| 5 | CALL | addSOD(handle, param, ODR_NAIYO_CD_218) (SIP registration) |
| 6 | IF | telno not empty && !isTajgsTelNo(telno) && isMonaiBmp(telno) |
| 7 | CALL | addSOD(handle, param, ODR_NAIYO_CD_225) (SIP + portable number info registration) |
| 8 | CALL | addSOD(handle, param, ODR_NAIYO_CD_265) (ENUM setup registration) |
| 9 | ELSE | 4 <= nOrderedZ1 || (isBmpNon && 4 > nOrderedZ1) (Z1 processed or non-portable) |
| 10 | CALL | addSOD(handle, param, ODR_NAIYO_CD_236) (SIP + call forwarding registration) |
| 11 | ELSE | chafOpSvcKeiStat IS 910/920 (disconnected/cancelled) |
| 12 | IF | isZ1Ordered |
| 13 | CALL | addSOD(handle, param, ODR_NAIYO_CD_237) (SIP + call forwarding cancellation) |
| 14 | ELSE | isBmpNon (non-portable number) |
| 15 | CALL | addSOD(handle, param, ODR_NAIYO_CD_229) (SIP cancellation) |
| 16 | CALL | addSOD(handle, param, ODR_NAIYO_CD_230) (SIP deletion) |
| 17 | IF | telno not empty && !isTajgsTelNo(telno) && isMonaiBmp(telno) |
| 18 | CALL | addSOD(handle, param, ODR_NAIYO_CD_266) (ENUM deletion) |
| 19 | IF | SBOP_SVC_CD_TENSOSEL.equals(chafSbopSvcCd) && isZ1Ordered && states differ |
| 20 | IF | chafSbopSvcKeiStat NOT 910/920 |
| 21 | CALL | addSOD(handle, param, ODR_NAIYO_CD_238) (SIP + call forwarding selection registration) |
| 22 | ELSE | disconnected/cancelled |
| 23 | CALL | addSOD(handle, param, ODR_NAIYO_CD_239) (SIP + call forwarding selection cancellation) |
| 24 | ELSE | states same && isZ1Ordered && SBOP_SVC_CD_TENSOSEL && (Z1 processed or non-portable) |
| 25 | IF | states differ |
| 26 | CALL | getSame_trn_no(param, handle, null, sameTrnNo) |
| 27 | IF | chafSbopSvcKeiStat NOT 910/920 |
| 28 | CALL | addSOD(handle, param, ODR_NAIYO_CD_238) (call forwarding selection registration) |
| 29 | ELSE | disconnected/cancelled |
| 30 | CALL | addSOD(handle, param, ODR_NAIYO_CD_239) (call forwarding selection cancellation) |

---

### Phase 14: Caller ID Display (OP_SVC_CD_DSP)

**Block 14** -- [IF] `OP_SVC_CD_DSP.equals(opSvcCd) && isZ1Ordered` (L13355)

| # | Type | Code |
|---|------|------|
| 1 | IF | states differ |
| 2 | CALL | getSame_trn_no(param, handle, null, sameTrnNo) |
| 3 | SET | this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no |
| 4 | IF | chafOpSvcKeiStat NOT 910/920 |
| 5 | CALL | addSOD(handle, param, ODR_NAIYO_CD_240) (SIP + caller ID display registration) |
| 6 | ELSE | disconnected/cancelled |
| 7 | CALL | addSOD(handle, param, ODR_NAIYO_CD_241) (SIP + caller ID display cancellation) |
| 8 | IF | states same && SBOP_SVC_CD_NOTELNO && states differ |
| 9 | CALL | getSame_trn_no(param, handle, null, sameTrnNo) |
| 10 | IF | chafSbopSvcKeiStat NOT 910/920 |
| 11 | CALL | addSOD(handle, param, ODR_NAIYO_CD_242) (SIP + non-notified call rejection registration) |
| 12 | ELSE | disconnected/cancelled |
| 13 | CALL | addSOD(handle, param, ODR_NAIYO_CD_243) (SIP + non-notified call rejection cancellation) |

---

### Phase 15: Anonymous Call Rejection (OP_SVC_CD_MWKTEL)

**Block 15** -- [IF] `OP_SVC_CD_MWKTEL.equals(opSvcCd) && isZ1Ordered` (L13455)

| # | Type | Code |
|---|------|------|
| 1 | IF | states differ |
| 2 | CALL | getSame_trn_no(param, handle, null, sameTrnNo) |
| 3 | SET | this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no |
| 4 | IF | chafOpSvcKeiStat NOT 910/920 |
| 5 | CALL | addSOD(handle, param, ODR_NAIYO_CD_244) (SIP + anonymous call rejection registration) |
| 6 | ELSE | disconnected/cancelled |
| 7 | CALL | addSOD(handle, param, ODR_NAIYO_CD_245) (SIP + anonymous call rejection cancellation) |

---

### Phase 16: Restricted Number Selection (OP_SVC_CD_STINO)

**Block 16** -- [IF] `OP_SVC_CD_STINO.equals(opSvcCd) && isZ1Ordered` (L13511)

| # | Type | Code |
|---|------|------|
| 1 | IF | states differ |
| 2 | CALL | getSame_trn_no(param, handle, null, sameTrnNo) |
| 3 | SET | this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no |
| 4 | IF | chafOpSvcKeiStat NOT 910/920 |
| 5 | CALL | addSOD(handle, param, ODR_NAIYO_CD_246) (SIP + restricted number rejection registration) |
| 6 | ELSE | disconnected/cancelled |
| 7 | CALL | addSOD(handle, param, ODR_NAIYO_CD_247) (SIP + restricted number rejection cancellation) |

---

### Phase 17: International Call Suspension (OP_SVC_CD_KOKUSAI_STP)

**Block 17** -- [IF] `OP_SVC_CD_KOKUSAI_STP.equals(opSvcCd) && isZ1Ordered` (L13567)

| # | Type | Code |
|---|------|------|
| 1 | IF | states differ |
| 2 | CALL | getSame_trn_no(param, handle, null, sameTrnNo) |
| 3 | SET | this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no |
| 4 | IF | chafOpSvcKeiStat NOT 910/920 |
| 5 | CALL | tsuikabunAddSOD(handle, param, ODR_NAIYO_CD_253) (SIP + international call suspension registration) |
| 6 | ELSE | disconnected/cancelled |
| 7 | CALL | tsuikabunAddSOD(handle, param, ODR_NAIYO_CD_254) (SIP + international call suspension cancellation) |

---

### Phase 18: IPv6 Dispatch (OP_SVC_CD_IPV6)

**Block 18** -- [IF] `OP_SVC_CD_IPV6.equals(opSvcCd)` (L13629)

| # | Type | Code |
|---|------|------|
| 1 | SET | this.op_svc_kei_no_ipv6 = chaf_opsvkei_no |
| 2 | CALL | getSame_trn_no(param, handle, null, sameTrnNo) |
| 3 | IF | isBlank(chbf_opsvkei_no) (new IPv6 option) |
| 4 | SET | this.sod_pattern_ipv6 = 1 (registration) |
| 5 | CALL | jdgIpv6(handle, param, "", chaf_opsvkei_no, chafEKK0361A010SCHash) |
| 6 | ELSE | isDslOpsvkei (910 or 920 after) |
| 7 | SET | this.sod_pattern_ipv6 = 3 (cancellation) |
| 8 | CALL | jdgIpv6(handle, param, "", chbf_opsvkei_no, chafEKK0361A010SCHash) |
| 9 | ELSE | recovered (910 before, 100 after) |
| 10 | SET | this.sod_pattern_ipv6 = 1 (registration) |
| 11 | CALL | jdgIpv6(handle, param, "", chaf_opsvkei_no, chafEKK0361A010SCHash) |

---

### Phase 19: Number Portability (OP_SVC_CD_N050)

**Block 19** -- [IF] `OP_SVC_CD_N050.equals(opSvcCd) && isZ1Ordered` (L13685)

| # | Type | Code |
|---|------|------|
| 1 | CALL | add050AddSod(param, handle, svc_kei_no, svc_kei_ucwk_no, chaf_svc_kei_ucwk_gene_add_dtm, chaf_opsvkei_no, chaf_opsvkei_gene_add_dtm) (Number portability registration) |
| 2 | CALL | add050DelSod(param, handle, svc_kei_no, svc_kei_ucwk_no, chaf_svc_kei_ucwk_gene_add_dtm, chaf_opsvkei_no, chaf_opsvkei_gene_add_dtm) (Number portability deletion) |

---

### Phase 20: Ani-koro Call Service (OP_SVC_CD_B135)

**Block 20** -- [IF] `OP_SVC_CD_B135.equals(opSvcCd) && (isZ1Ordered || isKikiSeizoNoCheckResult)` (L13766)

| # | Type | Code |
|---|------|------|
| 1 | SET | this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no |
| 2 | SET | this.op_svc_kei_no = chaf_opsvkei_no |
| 3 | CALL | takino_flg = checkTakinoRT(handle, param) |
| 4 | IF | takino_flg == 4 (modification order only) |
| 5 | SET | eKK0251B001Hash = getEKK0251B001SC(...) |
| 6 | CALL | callEKK0191A010SC(...) (eo Hikari Phone detail) |
| 7 | CALL | callEKK0191B001_2SC(param, handle, svc_kei_no, resultHash, FUNC_CODE_1) |
| 8 | FOR | Loop msgList[i] -- count active line items for this router |
| 9 | IF | ucwkStat NOT 910/920/010 and vaKikiChgNo matches chaf_vaKikiChgNo |
| 10 | SET | ucwkCount++ |
| 11 | CALL | getSame_trn_no(param, handle, null, sameTrnNo) |
| 12 | IF | ucwkCount <= 1 |
| 13 | CALL | addTakinoSOD(handle, param, ODR_NAIYO_CD_425) (Ani-koro Call Service 1-line attached) |
| 14 | ELSE | ucwkCount > 1 |
| 15 | CALL | addTakinoSOD(handle, param, ODR_NAIYO_CD_426) (Ani-koro Call Service 2-line attached) |

---

### Phase 21: Final Setup

**Block 21** -- [SET] Final Instance Fields (L13864)

| # | Type | Code |
|---|------|------|
| 1 | SET | this.mae_recode_chaf_op_svc_kei_no = new String(chaf_opsvkei_no) |
| 2 | SET | this.mae_recode_chaf_op_svc_kei_gene_add_dtm = new String(chaf_opsvkei_gene_add_dtm) |
| 3 | SET | this.mae_recode_chbf_op_svc_kei_no = new String(chbf_opsvkei_no) |
| 4 | SET | this.mae_recode_chbf_op_svc_kei_gene_add_dtm = new String(chbf_opsvkei_gene_add_dtm) |
| 5 | RETURN | return param |
