**Block 5** -- IF [EOMOBA_FLG] (L23642)

> EO Mobile section. If the EO Mobile flag is true, create the main mobile bean and add optional add-ons.

| # | Type | Code |
|---|------|------|
| 1 | SET | `childBean = dataArray.addDataBean()` // Create MBL main bean |
| 2 | SET | `pcrsGrpCd = getMobSvcKeiPgrpCd(dataBean)` |
| 3 | SET | `pcrsCd = getMobSvcKeiPcrsCd(dataBean)` |
| 4 | EXEC | `childBean.sendMessageString(KKW00101SFConst.SVC_KIND_CD_12, ..., WRIB_KIND_CD.MBL.name())` // Service type code |
| 5 | EXEC | `childBean.sendMessageString(KKW00101SFConst.SVC_CD_12, ..., getMobSvcCd(dataBean))` // Service code |
| 6 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PRC_GRP_CD_12, ..., pcrsGrpCd)` // Pricing group code |
| 7 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PCRS_CD_12, ..., pcrsCd)` // Cost code |
| 8 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PPLAN_CD_12, ..., getMobSvcKeiPplanCd(dataBean))` // Plan code |

**Block 5.1** -- IF [pcrsCd != MOBILE_MAIL] (L23654-23667)

> If the mobile cost code is not Mobile Mail, add the Mobile Wi-Fi bean.

| # | Type | Code |
|---|------|------|
| 1 | IF | `!JKKStrConst.CD00134_MOB_MAIL.equals(pcrsCd)` [-> CD00134_MOB_MAIL="Mobile Mail"] |
| 2 | SET | `childBean = dataArray.addDataBean()` |
| 3 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PCRS_CD_12, ..., JKKStrConst.CD00134_MOB_WIFI)` // Mobile Wi-Fi |
| 4 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PPLAN_CD_12, ..., JKKStrConst.CD00565_MOB_WIFI)` |

**Block 5.2** -- IF [pcrsGrpCd == 09] (L23669-23682)

> If the pricing group code is "09", add the WiMAX bean.

| # | Type | Code |
|---|------|------|
| 1 | IF | `JKKStrConst.CD00133_09.equals(pcrsGrpCd)` [-> CD00133_09="09"] |
| 2 | SET | `childBean = dataArray.addDataBean()` |
| 3 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PCRS_CD_12, ..., JKKStrConst.CD00134_MOB_WIMAX)` // WiMAX |
| 4 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PPLAN_CD_12, ..., JKKStrConst.CD00565_MOB_WIMAX)` |

**Block 5.3** -- IF [pcrsCd != A30 or MOBILE_MAIL] (L23688-23708)

> If not A30 (free plan) or Mobile Mail, add the device bean for equipment (UM machine, US machine, cradle).

| # | Type | Code |
|---|------|------|
| 1 | IF | `!JKKStrConst.CD00134_A30.equals(pcrsCd) && !JKKStrConst.CD00134_MOB_MAIL.equals(pcrsCd)` |
| 2 | SET | `kikiPcrsCd = JKKWebCommon.convertCode(dataBean, KKW00101SFConst.MOBILE_KIKI_COURSE_CHOICE, KKW00101SFConst.MOBILE_KIKI_CD_25, KKW00101SFConst.MOBILE_KIKI_CD_LIST_25)` |
| 3 | SET | `kikiPplanCd = getMobKikiPplanCd(dataBean, kikiPcrsCd)` |
| 4 | SET | `kikiSvcCd = getMobKikiSvcCd(dataBean, kikiPcrsCd)` |
| 5 | SET | `childBean = dataArray.addDataBean()` |
| 6 | EXEC | `childBean.sendMessageString(KKW00101SFConst.KKTK_SVC_CD_12, ..., kikiSvcCd)` // Equipment service code |
| 7 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PCRS_CD_12, ..., kikiPcrsCd)` |
| 8 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PPLAN_CD_12, ..., kikiPplanCd)` |
| 9 | EXEC | `childBean.sendMessageString(KKW00101SFConst.KKTK_SBT_CD_12, ..., JKKStrConst.CD00212_01)` |

**Block 5.4** -- IF [pcrsCd == 3G72M_HYBRID] (L23712-23730)

> Hybrid Router section. If the cost code indicates a 3G 7.2M hybrid plan, add the hybrid router bean.

| # | Type | Code |
|---|------|------|
| 1 | IF | `JKKStrConst.CD00134_3G72M_HYBRID.equals(pcrsCd)` |
| 2 | SET | `kikiPcrsCd = CD00134_MOB_3G7_2M_ROUTER` |
| 3 | SET | `kikiPplanCd = getMobKikiPplanCd(dataBean, kikiPcrsCd)` |
| 4 | SET | `kikiSvcCd = getMobKikiSvcCd(dataBean, kikiPcrsCd)` |
| 5 | SET | `childBean = dataArray.addDataBean()` |
| 6 | EXEC | `childBean.sendMessageString(KKW00101SFConst.KKTK_SVC_CD_12, ..., kikiSvcCd)` // Equipment service code |
| 7 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PCRS_CD_12, ..., kikiPcrsCd)` // Hybrid 3G 7.2M router |
| 8 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PPLAN_CD_12, ..., kikiPplanCd)` |
| 9 | EXEC | `childBean.sendMessageString(KKW00101SFConst.KKTK_SBT_CD_12, ..., JKKStrConst.CD00212_01)` |

**Block 6** -- IF [EOADSL_FLG] (L23736)

> EO ADSL section. If the EO ADSL flag is true, create the main ADSL bean.

| # | Type | Code |
|---|------|------|
| 1 | SET | `childBean = dataArray.addDataBean()` // Create ADSL main bean |
| 2 | EXEC | `childBean.sendMessageString(KKW00101SFConst.SVC_KIND_CD_12, ..., WRIB_KIND_CD.ADSL.name())` // Service type code |
| 3 | EXEC | `childBean.sendMessageString(KKW00101SFConst.SVC_CD_12, ..., getAdslSvcCd(dataBean))` // Service code |
| 4 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PRC_GRP_CD_12, ..., getAdslSvcKeiPgrpCd(dataBean))` // Pricing group code |
| 5 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PCRS_CD_12, ..., getAdslPcrsCd(dataBean))` // Cost code |
| 6 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PPLAN_CD_12, ..., getAdslSvcKeiPplanCd(dataBean))` // Plan code |

**Block 6.1** -- IF [EACCESS + no 1M no-rent modem] (L23744-23760)

> ADSL Mode (EM) option. If EACCESS mode and the plan is not 1M no-rent modem, add the ADSL modem bean.

| # | Type | Code |
|---|------|------|
| 1 | SET | `eoadslEaccessFlg = dataBean.sendMessageString(KKW00101SFConst.EOADSL_EACCESS_FLG, ...)` |
| 2 | SET | `adslPlanCd = dataBean.getDataBeanArray(KKW00101SFConst.PLAN).getDataBean(0).sendMessageString(KKW00101SFConst.ADSL_PLAN_CD_39, ...)` |
| 3 | IF | `EOADSL_EACCESS.equals(eoadslEaccessFlg) && !EOADSL_PLAN_1M_NORENT_MODEM.equals(adslPlanCd)` |
| 4 | SET | `childBean = dataArray.addDataBean()` |
| 5 | EXEC | `childBean.sendMessageString(KKW00101SFConst.OP_SVC_CD_12, ..., JKKStrConst.OP_SVC_CD_MDM_EM)` // Option: ADSL Mode modem |
| 6 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PCRS_CD_12, ..., JKKStrConst.OPSVC_PCRS_MDM_EM)` |
| 7 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PPLAN_CD_12, ..., JKKStrConst.OPSVC_PPLAN_MDM_EM)` |

**Block 7** -- IF [VDSL active] (L23767-23795)

> VDSL Modem section. If VDSL is displayed on network tab or phone tab and is active, create the VDSL modem bean.

| # | Type | Code |
|---|------|------|
| 1 | SET | `netVdslHskDspCtlFlg = dataBean.sendMessageBoolean(KKW00101SFConst.NET_VDSL_HSK_DSP_CTL_FLG, ...)` |
| 2 | SET | `tel1VdslHskDspCtlFlg = dataBean.sendMessageBoolean(KKW00101SFConst.TEL1_VDSL_HSK_DSP_CTL_FLG, ...)` |
| 3 | SET | `vdslHskKsiCtlFlg = dataBean.sendMessageBoolean(KKW00101SFConst.VDSL_HSK_KSI_CTL_FLG, ...)` |
| 4 | IF | `(netVdslHskDspCtlFlg || tel1VdslHskDspCtlFlg) && vdslHskKsiCtlFlg` |
| 5 | SET | `prcKnrnMap = getModemPrcKnrnCd(dataBean, false, null)` // Second arg false, third null (see comments: mutual service on same line excluded from screen; contract info not referenced) |
| 6 | SET | `pcrsCd = prcKnrnMap.get(MODEM_PRC_KNRN_KEY_PCRSCD)` |
| 7 | SET | `pplanCd = prcKnrnMap.get(MODEM_PRC_KNRN_KEY_PPLANCD)` |
| 8 | SET | `vdslModemKktkSbtCd = JKKWebCommon.convertCode(dataBean, KKW00101SFConst.VDSL_HOSHIKI_LIST, KKW00101SFConst.SELECT_CD_59, KKW00101SFConst.CD_LIST_59)` |
| 9 | SET | `kktkSbtCd = getNetVdslKktkSbtCd(vdslModemKktkSbtCd)` |
| 10 | SET | `childBean = dataArray.addDataBean()` // VDSL Modem bean |
| 11 | EXEC | `childBean.sendMessageString(KKW00101SFConst.SVC_KIND_CD_12, ..., WRIB_KIND_CD.KISN_KEI_KIKI.name())` // Service type: Line equipment |
| 12 | EXEC | `childBean.sendMessageString(KKW00101SFConst.KKTK_SVC_CD_12, ..., JKKStrConst.CD00132_MODEM)` // Equipment service code: Modem |
| 13 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PCRS_CD_12, ..., pcrsCd)` |
| 14 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PPLAN_CD_12, ..., pplanCd)` |
| 15 | EXEC | `childBean.sendMessageString(KKW00101SFConst.KKTK_SBT_CD_12, ..., kktkSbtCd)` |

**Block 8** -- Multi-function Router section (L23799-23875)

> Multi-function router setup. Checks if a multi-function router rental is active. If so, add the router bean. Otherwise, checks EO Light Network flag and adds wireless or basic router based on PLC rental selection.

| # | Type | Code |
|---|------|------|
| 1 | SET | `routerRental = JKKWebCommon.getPullDownCode(dataBean, KKW00101SFConst.OP_ROUTER_RENTAL_LIST, KKW00101SFConst.SELECT_CD_59, KKW00101SFConst.CD_LIST_59)` |
| 2 | IF | `JKKWebCommon.isChgTakinortKktk(this)` |
| 3 | SET | `childBean = dataArray.addDataBean()` // Multi-function router bean |
| 4 | EXEC | `childBean.sendMessageString(KKW00101SFConst.SVC_KIND_CD_12, ..., WRIB_KIND_CD.KISN_KEI_KIKI.name())` |
| 5 | EXEC | `childBean.sendMessageString(KKW00101SFConst.KKTK_SVC_CD_12, ..., JKKStrConst.KKTK_SVC_CD_TAKINORT)` |
| 6 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PCRS_CD_12, ..., JKKStrConst.CD00134_TAKINORT)` |
| 7 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PPLAN_CD_12, ..., JKKStrConst.CD00565_TAKINORT)` |
| 8 | EXEC | `childBean.sendMessageString(KKW00101SFConst.KKTK_SBT_CD_12, ..., JKKStrConst.CD00212_02)` |
| 9 | ELSE | Not a multi-function router -- check EOH_NET_FLG |

**Block 8.1** -- ELSE [EOH_NET_FLG true?] (L23810-23849)

> If not a multi-function router, but EO Light Network is active, check PLC rental selection and add wireless router or basic router bean.

| # | Type | Code |
|---|------|------|
| 1 | IF | `dataBean.sendMessageBoolean(KKW00101SFConst.EOH_NET_FLG, ...)` |
| 2 | SET | `childBean = dataArray.addDataBean()` |
| 3 | IF | `OP_ROUTER_RENTAL_CD_MUSEN.equals(routerRental)` |
| 4 | SET | `childBean = dataArray.addDataBean()` // Wireless router bean |
| 5 | EXEC | `childBean.sendMessageString(KKW00101SFConst.KKTK_SVC_CD_12, ..., JKKStrConst.CD00132_BBR)` |
| 6 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PCRS_CD_12, ..., JKKStrConst.CD00134_MUSEN_1G_RENT)` |
| 7 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PPLAN_CD_12, ..., JKKStrConst.CD00565_MUSEN_1G_RENT)` |
| 8 | ELSE IF | `OP_ROUTER_RENTAL_CD_BASIC.equals(routerRental)` |
| 9 | SET | `childBean = dataArray.addDataBean()` // Basic router bean |
| 10 | EXEC | `childBean.sendMessageString(KKW00101SFConst.KKTK_SVC_CD_12, ..., JKKStrConst.CD00132_BBR)` |
| 11 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PCRS_CD_12, ..., JKKStrConst.CD00134_BASIC_1G_RENT)` |
| 12 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PPLAN_CD_12, ..., JKKStrConst.CD00565_BASIC_1G_RENT)` |

**Block 9** -- IF [chkChgKkopRouter] (L23856-23878)

> Router option check. If the wireless router option is active, add the KKOP router option bean with cost code and plan code.

| # | Type | Code |
|---|------|------|
| 1 | SET | `kkopPcrsCd = JKKWebCommon.chkChgKkopRouter(this)` |
| 2 | IF | `kkopPcrsCd != null` |
| 3 | IF | `JKKStrConst.CD00134_KKOP_MUSEN.equals(kkopPcrsCd)` |
| 4 | SET | `childBean = dataArray.addDataBean()` |
| 5 | EXEC | `childBean.sendMessageString(KKW00101SFConst.SVC_KIND_CD_12, ..., WRIB_KIND_CD.KIKI_OP.name())` // Equipment option |
| 6 | EXEC | `childBean.sendMessageString(KKW00101SFConst.KKOP_SVC_CD_12, ..., JKKStrConst.KKOP_SVC_CD_ROUTER)` // Router option |
| 7 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PCRS_CD_12, ..., JKKStrConst.CD00134_KKOP_MUSEN)` // Wireless |
| 8 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PPLAN_CD_12, ..., JKKStrConst.CD00565_KKOP_MUSEN)` |
| 9 | ELSE IF | `JKKStrConst.CD00134_KKOP_YUSEN.equals(kkopPcrsCd)` |
| 10 | SET | `childBean = dataArray.addDataBean()` |
| 11 | EXEC | `childBean.sendMessageString(KKW00101SFConst.KKOP_SVC_CD_12, ..., JKKStrConst.KKOP_SVC_CD_ROUTER)` // Router option |
| 12 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PCRS_CD_12, ..., JKKStrConst.CD00134_KKOP_YUSEN)` // Wired |
| 13 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PPLAN_CD_12, ..., JKKStrConst.CD00565_KKOP_YUSEN)` |

**Block 10** -- IF [chkChgKkopTelAdapt] (L23881-23902)

> Telephone adapter option check. If the telephone adapter option is active, add the KKOP tel adapter bean with cost code and plan code.

| # | Type | Code |
|---|------|------|
| 1 | SET | `kkopPcrsCd = JKKWebCommon.chkChgKkopTelAdapt(this)` |
| 2 | IF | `kkopPcrsCd != null` |
| 3 | IF | `JKKStrConst.CD00134_KKOP_TEL_1.equals(kkopPcrsCd)` |
| 4 | SET | `childBean = dataArray.addDataBean()` |
| 5 | EXEC | `childBean.sendMessageString(KKW00101SFConst.SVC_KIND_CD_12, ..., WRIB_KIND_CD.KIKI_OP.name())` // Equipment option |
| 6 | EXEC | `childBean.sendMessageString(KKW00101SFConst.KKOP_SVC_CD_12, ..., JKKStrConst.KKOP_SVC_CD_TEL_ADAPT)` // Tel adapter option |
| 7 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PCRS_CD_12, ..., JKKStrConst.CD00134_KKOP_TEL_1)` // Tel adapter #1 |
| 8 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PPLAN_CD_12, ..., JKKStrConst.CD00565_KKOP_TEL_1)` |
| 9 | ELSE IF | `JKKStrConst.CD00134_KKOP_TEL_2.equals(kkopPcrsCd)` |
| 10 | SET | `childBean = dataArray.addDataBean()` |
| 11 | EXEC | `childBean.sendMessageString(KKW00101SFConst.KKOP_SVC_CD_12, ..., JKKStrConst.KKOP_SVC_CD_TEL_ADAPT)` // Tel adapter option |
| 12 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PCRS_CD_12, ..., JKKStrConst.CD00134_KKOP_TEL_2)` // Tel adapter #2 |
| 13 | EXEC | `childBean.sendMessageString(KKW00101SFConst.PPLAN_CD_12, ..., JKKStrConst.CD00565_KKOP_TEL_2)` |

**Block 11** -- RETURN (L23906)

> Return the assembled bean array containing the parent form bean plus all service line item child beans.

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