## 6. Per-Branch Detail Blocks

**Block 1** -- INIT (L23194)

> Initialize data structures. Get form bean, retrieve the service contract detail bean array, clear it, and prepare a one-element array holding the parent bean.

| # | Type | Code |
|---|------|------|
| 1 | SET | `dataBean = getServiceFormBean()` |
| 2 | SET | `dataArray = dataBean.getDataBeanArray(KKW00101SFConst.SVC_KEI_SVC_KEI_UCWK_INFO)` |
| 3 | EXEC | `dataArray.clearArray()` // Clear the service contract detail list |
| 4 | SET | `bean = { dataBean }` |

**Block 2** -- IF [EOH_NET_FLG] (L23200)

> EO Light Network (fiber) section. If the EO Light Network flag is true, create the main fiber bean and add optional add-ons.

| # | Type | Code |
|---|------|------|
| 1 | SET | `childBean = dataArray.addDataBean()` // Create NET main bean |
| 2 | EXEC | `childBean.sendMessageString(KKW00101SFConst.SVC_KIND_CD_12, ..., WRIB_KIND_CD.NET.name())` // Service type code |
| 3 | EXEC | `childBean.sendMessageString(KKW00101SFConst.SVC_CD_12, ..., getNetSvcCd(dataBean))` // Service code |
| 4 | SET | `mskmFormCd = bean[0].sendMessageString(KKW00101SFConst.MSKM_FORM_CD, ...)` |
| 5 | SET | `mskmshoSbtCd = null` |

**Block 2.1** -- IF [mskmFormCd == MSKM_FORM_CD_TEL] (L23206)

> Submission type is "telephone application" -- read submission sub-type from JYUKYO_TYPE.

| # | Type | Code |
|---|------|------|
| 1 | IF | `MSKM_FORM_CD_TEL.equals(mskmFormCd)` |
| 2 | SET | `mskmshoSbtCd = bean[0].sendMessageString(KKW00101SFConst.JYUKYO_TYPE, ...)` // Housing type for phone application |

**Block 2.2** -- IF [mskmFormCd == MSKM_FORM_CD_SHOMEN] (L23210)

> Submission type is "document application" -- read submission sub-type from MSKMSHO_KIND.

| # | Type | Code |
|---|------|------|
| 1 | IF | `MSKM_FORM_CD_SHOMEN.equals(mskmFormCd)` |
| 2 | SET | `mskmshoSbtCd = bean[0].sendMessageString(KKW00101SFConst.MSKMSHO_KIND, ...)` // Submission kind for document application |

**Block 2.3** -- Set pricing group (L23217)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PRC_GRP_CD_12, ..., getNetSvcKeiPgrpCd(dataBean, mskmshoSbtCd))` // Pricing group code |

**Block 2.4** -- Get mansion map and price codes (L23220-23224)

| # | Type | Code |
|---|------|------|
| 1 | SET | `mansionMap = getMansionMap(this, SESSION_KEY_MSKMDATA)` // Mansion info map |
| 2 | SET | `prcKnrnMap = getNetSvcKeiPrcKnrnCd(bean[0], mskmshoSbtCd, mansionMap)` // Price-related codes |
| 3 | SET | `chgPrcKnrnMap = JKKWebCommon.getNetPrcKnrnCdTo100mPremium(...)` // Convert to 100M premium codes |
| 4 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PCRS_CD_12, ..., chgPrcKnrnMap.get(NET_PRC_KNRN_KEY_PCRSCD))` // Cost code |
| 5 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PPLAN_CD_12, ..., chgPrcKnrnMap.get(NET_PRC_KNRN_KEY_PPLANCD))` // Plan code |

**Block 2.5** -- IF [opRemotePlus] (L23227)

> If EO Light Remote Support Plus is selected, add the Remote Support bean.

| # | Type | Code |
|---|------|------|
| 1 | SET | `opRemotePlus = dataBean.sendMessageBoolean(KKW00101SFConst.OP_REMOTE_PLUS, ...)` |
| 2 | IF | `opRemotePlus == true` |
| 3 | SET | `childBean = dataArray.addDataBean()` |
| 4 | EXEC | `childBean.sendMessageString(KKW00101SFConst.SVC_KIND_CD_12, ..., WRIB_KIND_CD.NET.name())` // Service type |
| 5 | EXEC | `childBean.sendMessageString(KKW00101SFConst.OP_SVC_CD_12, ..., JKKStrConst.OP_SVC_CD_RMTSPRT_PLUS)` // Option service code |
| 6 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PCRS_CD_12, ..., JKKStrConst.OPSVC_PCRS_RMTSPRT_PLUS)` // Cost code |
| 7 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PPLAN_CD_12, ..., JKKStrConst.OPSVC_PPLAN_RMTSPRT_PLUS)` // Plan code |

**Block 2.6** -- IF [OP_PLC_RENTAL == MUSEN] (L23239-23255)

> ANK-3825-00-00 MOD: PLC Rental check. When no PLC rental is selected (MUSEN), add the PLC rental bean (Wi-Fi router rental).

| # | Type | Code |
|---|------|------|
| 1 | SET | `opPlcRental = JKKWebCommon.getPullDownCode(bean[0], KKW00101SFConst.OP_PLC_RENTAL_LIST, KKW00101SFConst.SELECT_CD_59, KKW00101SFConst.CD_LIST_59)` |
| 2 | IF | `JKKKeiNewCmnLogicUtil.OP_PLC_RENTAL_CD_MUSEN.equals(opPlcRental)` [-> OP_PLC_RENTAL_CD_MUSEN="MUSEN"] |
| 3 | SET | `childBean = dataArray.addDataBean()` |
| 4 | EXEC | `childBean.sendMessageString(KKW00101SFConst.SVC_KIND_CD_12, ..., WRIB_KIND_CD.NET.name())` // Service type |
| 5 | EXEC | `childBean.sendMessageString(KKW00101SFConst.KKTK_SVC_CD_12, ..., JKKStrConst.CD00132_PLC)` // Equipment service code: PLC |
| 6 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PCRS_CD_12, ..., JKKStrConst.CD00134_WLR_LAN)` // Cost code: Wi-Fi LAN |
| 7 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PPLAN_CD_12, ..., JKKStrConst.CD00565_WLR_LAN)` // Plan code: Wi-Fi LAN |
| 8 | EXEC | `childBean.sendMessageString(KKW00101SFConst.KKTK_SBT_CD_12, ..., JKKStrConst.CD00212_02)` // Equipment sub-type |

**Block 2.7** -- IF [OP_PLC_RENTAL == MESH] (L23257-23273)

> ANK-3825-00-00 ADD: Mesh Wi-Fi option.

| # | Type | Code |
|---|------|------|
| 1 | IF | `JKKKeiNewCmnLogicUtil.OP_PLC_RENTAL_CD_MESH.equals(opPlcRental)` [-> OP_PLC_RENTAL_CD_MESH="MESH"] |
| 2 | SET | `childBean = dataArray.addDataBean()` |
| 3 | EXEC | `childBean.sendMessageString(KKW00101SFConst.SVC_KIND_CD_12, ..., WRIB_KIND_CD.NET.name())` |
| 4 | EXEC | `childBean.sendMessageString(KKW00101SFConst.KKTK_SVC_CD_12, ..., JKKStrConst.CD00132_PLC)` |
| 5 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PCRS_CD_12, ..., JKKStrConst.CD00134_MESH_WIFI)` // Mesh Wi-Fi cost code |
| 6 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PPLAN_CD_12, ..., JKKStrConst.CD00565_MESH_WIFI)` // Mesh Wi-Fi plan code |
| 7 | EXEC | `childBean.sendMessageString(KKW00101SFConst.KKTK_SBT_CD_12, ..., JKKStrConst.CD00212_02)` |

**Block 2.8** -- IF [ipStbRental] (L23277-23310)

> EO Light STB (Set-Top Box) rental section. If count is "1" and greater than 0, add the IP STB bean.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ipStbRental = dataBean.sendMessageBoolean(KKW00101SFConst.IP_STB_RENTAL, ...)` |
| 2 | IF | `ipStbRental == true` |
| 3 | SET | `ipStbRentalUseCnt = dataBean.sendMessageString(KKW00101SFConst.IP_STB_RENTAL_USE_CNT, ...)` |
| 4 | IF | `ipStbRentalUseCnt.matches(HANKAKU_NUM_1) && count > 0` [-> HANKAKU_NUM_1="1"] |
| 5 | SET | `childBean = dataArray.addDataBean()` |
| 6 | EXEC | `childBean.sendMessageString(KKW00101SFConst.SVC_KIND_CD_12, ..., WRIB_KIND_CD.NET.name())` |
| 7 | EXEC | `childBean.sendMessageString(KKW00101SFConst.KKTK_SVC_CD_12, ..., JKKStrConst.KKTK_SVC_CD_IP_STB)` |
| 8 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PCRS_CD_12, ..., JKKStrConst.CD00134_SMP)` // IT1-2021 MOD: STB cost code (replaced CD00134_IP_STB) |
| 9 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PPLAN_CD_12, ..., JKKStrConst.CD00565_SMP)` // IT1-2021 MOD: STB plan code (replaced CD00565_IP_STB) |
| 10 | EXEC | `childBean.sendMessageString(KKW00101SFConst.KKTK_SBT_CD_12, ..., JKKStrConst.CD00212_01)` // ANK-3987 MOD: Changed from CD00212_02 |

**Block 2.9** -- IF [tabletBuy] (L23314-23347)

> Tablet purchase section. Creates the main tablet bean, then conditionally adds the cradle bean.

| # | Type | Code |
|---|------|------|
| 1 | SET | `tabletBuy = dataBean.sendMessageBoolean(KKW00101SFConst.TABLET_BUY, ...)` |
| 2 | IF | `tabletBuy == true` |
| 3 | SET | `childBean = dataArray.addDataBean()` // Tablet main bean |
| 4 | EXEC | `childBean.sendMessageString(KKW00101SFConst.SVC_KIND_CD_12, ..., WRIB_KIND_CD.NET.name())` |
| 5 | EXEC | `childBean.sendMessageString(KKW00101SFConst.KKTK_SVC_CD_12, ..., JKKStrConst.KKTK_SVC_CD_TABLET)` |
| 6 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PCRS_CD_12, ..., JKKStrConst.CD00134_TABLET)` |
| 7 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PPLAN_CD_12, ..., JKKStrConst.CD00565_TABLET)` |
| 8 | EXEC | `childBean.sendMessageString(KKW00101SFConst.KKTK_SBT_CD_12, ..., JKKStrConst.CD00212_01)` |
| 9 | SET | `cradleTkniKkCd = JKKWebCommon.getPullDownCode(bean[0], KKW00101SFConst.TABLET_TNMT_NM_LIST, KKW00101SFConst.TABLET_SELECT_CD_17, KKW00101SFConst.CRADLE_KIKI_MODEL_CD_LIST_17)` |

**Block 2.9.1** -- IF [cradleTkniKkCd not empty] (L23348-23363)

> If the cradle home equipment model code is not empty, add the tablet cradle bean.

| # | Type | Code |
|---|------|------|
| 1 | IF | `!"".equals(cradleTkniKkCd)` // Only register if cradle model code is non-empty |
| 2 | SET | `childBean = dataArray.addDataBean()` |
| 3 | EXEC | `childBean.sendMessageString(KKW00101SFConst.KKTK_SVC_CD_12, ..., JKKStrConst.KKTK_SVC_CD_TABLET_CRADLE)` |
| 4 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PCRS_CD_12, ..., JKKStrConst.CD00134_TABLET_CRADLE)` |
| 5 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PPLAN_CD_12, ..., JKKStrConst.CD00565_TABLET_CRADLE)` |
| 6 | EXEC | `childBean.sendMessageString(KKW00101SFConst.KKTK_SBT_CD_12, ..., JKKStrConst.CD00212_01)` |

**Block 2.10** -- IF [tabletPremiumPack] (L23367-23379)

> Tablet Premium Pack (SmartLink Premium) section.

| # | Type | Code |
|---|------|------|
| 1 | SET | `tabletPremiumPack = dataBean.sendMessageBoolean(KKW00101SFConst.TABLET_PREMIUM_PACK, ...)` |
| 2 | IF | `tabletPremiumPack == true` |
| 3 | SET | `childBean = dataArray.addDataBean()` |
| 4 | EXEC | `childBean.sendMessageString(KKW00101SFConst.SVC_KIND_CD_12, ..., WRIB_KIND_CD.NET.name())` |
| 5 | EXEC | `childBean.sendMessageString(KKW00101SFConst.OP_SVC_CD_12, ..., JKKStrConst.OP_SVC_CD_SMARTLINK_PREMIUM)` |
| 6 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PCRS_CD_12, ..., JKKStrConst.OPSVC_PCRS_SMARTLINK_PREMIUM)` |
| 7 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PPLAN_CD_12, ..., JKKStrConst.OPSVC_PPLAN_SMARTLINK_PREMIUM)` |
