# Business Logic — KKW00121SFLogic.checkKKW00124Error() [655 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKW00121SF.KKW00121SFLogic` |
| Layer | Controller (Web Logic — within `eo.web.webview` package, handles screen-level validation) |
| Module | `KKW00121SF` (Package: `eo.web.webview.KKW00121SF`) |

## 1. Role

### KKW00121SFLogic.checkKKW00124Error()

This method performs comprehensive pre-registration validation for the eo Net service contract screen (KKW00124 / 照枠前登録 — "Before Confirmation Frame Registration"). It is the central validation gate invoked just before a customer's service contract data is submitted for processing. The method checks required-field completeness, cross-field consistency, tablet and smartphone terminal purchase validations, service pack (Security Pack, Family Pack, Premium Pack, Smart Premium) co-registration rules, router rental fee change detection, and Type-N-specific telephone number and transfer rules. It employs a routing/dispatch pattern by branching based on customer type (mansion vs. mezohn vs. Type-N), connection method (Ethernet, optical fiber, VDSL), and conditional flags (tablet purchase, IP-STB rental, course change). Its role in the larger system is that of a shared validation orchestrator called by multiple entry methods within `KKW00121SFLogic` — namely `checkAllGamenError()`, `checkGamenError()`, `smpAgntGet()`, and `tabletAgntGet()` — ensuring screen-level data integrity before any service component (SC) calls are made. The method supports three distinct service categories: Net service contracts, tablet device purchase flows, and streaming media player (SMP) purchase flows, with conditional branches handling each category's specific validation rules.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["checkKKW00124Error"]) --> GET_DB["Get dataBean from form bean"]
    GET_DB --> IS_ERR{"isErrClear == true?"}
    IS_ERR -->|true| CLEAR_ERR["Clear page err info, reset TAB_NET_DSP_STAT"]
    IS_ERR -->|false| SKIP_CLEAR[Skip error clear]
    CLEAR_ERR --> GET_SKEKKA["Get review result code SKEKKA_TCHI_22"]
    SKIP_CLEAR --> GET_SKEKKA
    GET_SKEKKA --> SKEKKA_EMPTY{"SKEKKA_TCHI_22 empty?"}
    SKEKKA_EMPTY -->|yes| ERR_SKEKKA["Add error EKB1320_NW for SKEKKA_TCHI_22 mandatory check"]
    SKEKKA_EMPTY -->|no| CHECK_TMCK["Call checkTmckSkekkaCdDetail"]
    ERR_SKEKKA --> SET_TAB_1["Set TAB_NET_DSP_STAT to TAB_ERROR_ID"]
    SET_TAB_1 --> CHECK_TMCK

    CHECK_TMCK --> CONVERT_JIMU["Call convertJimuCommisionIdxToCode"]
    CONVERT_JIMU --> JIMU_EMPTY{"JIMU_COMMISION empty?"}
    JIMU_EMPTY -->|yes| ERR_JIMU["Add error EKB0010_TW for JIMU_COMMISION mandatory check"]
    JIMU_EMPTY -->|no| CHECK_JIMU_SHITEI{"JIMU_COMMISION == JIMU_COMMISION_SHITEI?
JIMU_COMMISION_SHITEI=\"指定額\""}
    ERR_JIMU --> SET_TAB_2["Set TAB_NET_DSP_STAT"]
    SET_TAB_2 --> CHECK_JIMU_SHITEI
    CHECK_JIMU_SHITEI -->|yes| JIMU_SITEI_EMPTY{"jimuCommisionSitei empty?"}
    CHECK_JIMU_SHITEI -->|no| GET_TABLET["Get tablet and SMP info from dataBean"]
    JIMU_SITEI_EMPTY -->|yes| ERR_JIMU_SITEI["Add error EKB0710_NW for JIMU_COMMISION_SHITEI mandatory check"]
    JIMU_SITEI_EMPTY -->|no| GET_TABLET
    ERR_JIMU_SITEI --> SET_TAB_3["Set TAB_NET_DSP_STAT"]
    SET_TAB_3 --> GET_TABLET

    GET_TABLET --> CHECK_PREM{"tabletPremiumPack == true?"}
    CHECK_PREM -->|yes| CHECK_PREM_BUY{"tabletBuy == false?"}
    CHECK_PREM -->|no| CHECK_TAB_BUY{"tabletBuy == true?"}
    CHECK_PREM_BUY -->|yes| ERR_PREM["Add error EKBB860__Q for Premium Pack needs tablet purchase"]
    CHECK_TAB_BUY -->|yes| CHECK_TNMT_NAME{"tabletTnmtNm empty?"}
    CHECK_TAB_BUY -->|no| CHECK_TNMT_PAY{"tabletPayway == null?"}
    CHECK_PREM_BUY -->|no| CHECK_TAB_BUY

    CHECK_TNMT_NAME -->|yes| ERR_TNMT_NM["Add error EKBB870_NW for tablet terminal name missing"]
    ERR_TNMT_NM --> SET_TAB_4["Set TAB_NET_DSP_STAT"]
    SET_TAB_4 --> CHECK_TNMT_PAY
    CHECK_TNMT_NAME -->|no| CHECK_TNMT_PAY

    CHECK_TNMT_PAY -->|yes| ERR_TNMT_PAY["Loop payway items, add error EKBB870_NW for each"]
    ERR_TNMT_PAY --> SET_TAB_5["Set TAB_NET_DSP_STAT"]
    SET_TAB_5 --> CHECK_TNMT_BUY{"isCallTabletAgntGet==false AND buyerName empty?"}
    CHECK_TNMT_PAY -->|no| CHECK_TNMT_BUY
    CHECK_TNMT_BUY -->|yes| ERR_TNMT_BUY["Add error EKBC870_KW for tablet buyer name missing"]
    ERR_TNMT_BUY --> SET_TAB_6["Set TAB_NET_DSP_STAT"]
    SET_TAB_6 --> CHECK_GH["Get GH judge info from dataBean"]
    CHECK_TNMT_BUY -->|no| CHECK_GH

    CHECK_GH --> CHECK_GH_PREM{"NOT tabletPremiumPack AND NOT ghFlg?"}
    CHECK_GH_PREM -->|yes| ERR_GH["Add error EKBB880__Q for tablet premium pack or GH required"]
    CHECK_GH_PREM -->|no| GET_SESS["Get session screen info"]
    ERR_GH --> GET_SESS

    GET_SESS --> GET_PK_FLAGS["Get pack visibility flags"]
    GET_PK_FLAGS --> CHK_PK_VIS{"All 3 pack visibility == false?"}
    CHK_PK_VIS -->|yes| CHK_PK_ACT{"securityPack OR famiPack OR prePack?"}
    CHK_PK_VIS -->|no| CALL_SVC["Generate paramMap, mapper, call callService with KKSV0119"]
    CHK_PK_ACT -->|yes| ERR_PK["Add error EKBD360__Q for pack mismatch"]
    CHK_PK_ACT -->|no| CALL_SVC
    ERR_PK --> CALL_SVC

    CALL_SVC --> SVC_RES{"callService == false?"}
    SVC_RES -->|yes| SET_TAB_7["Set TAB_NET_DSP_STAT"]
    SVC_RES -->|no| GET_SVC_NO["Get SVC_KEI_NO_22"]
    SET_TAB_7 --> GET_SVC_NO
    GET_SVC_NO --> SVC_NO_LEN{"SVC_KEI_NO length > 0?"}
    SVC_NO_LEN -->|yes| CHK_ROUTER{"opFamilyPack == false?"}
    SVC_NO_LEN -->|no| CHK_MASTA
    CHK_ROUTER -->|yes| GET_RENTAL["Get router rental values"]
    GET_RENTAL --> CHK_RENTAL{"Router rental fee changed?"}
    CHK_RENTAL -->|yes| ERR_RENTAL["Add error EKB2860__Q for router rental fee change"]
    CHK_RENTAL -->|no| CHK_FP_ROUTER{"chkChgKkopRouter==null AND opFamilyPack AND NotFamilyPackRouterCount>0?"}
    CHK_FP_ROUTER -->|yes| ERR_FP_ROUTER["Add error EKB5880_KW for family pack without family router"]
    ERR_FP_ROUTER --> SET_TAB_8["Set TAB_NET_DSP_STAT"]
    SET_TAB_8 --> CHK_JIMU_CHG{"checkJimuCommision != 0?"}
    CHK_FP_ROUTER -->|no| CHK_JIMU_CHG
    CHK_JIMU_CHG -->|yes| ERR_JIMU_CHG["Add error EKB7900__Q for working document change"]
    CHK_JIMU_CHG -->|no| CHK_HYOUJYUN{"checkHyojunKojihi != 0?"}
    ERR_JIMU_CHG --> CHK_HYOUJYUN
    CHK_HYOUJYUN -->|yes| ERR_HYOUJYUN["Add error EKB8460__Q for standard labor cost change"]
    CHK_HYOUJYUN -->|no| CHK_PRI_ROUTER{"checkPrivateRouter==true?"}
    ERR_HYOUJYUN --> CHK_PRI_ROUTER
    CHK_PRI_ROUTER -->|yes| ERR_PRI_ROUTER["Add error EKBA510_KW for private router"]
    ERR_PRI_ROUTER --> SET_TAB_9["Set TAB_NET_DSP_STAT"]
    SET_TAB_9 --> CHK_FP_CANCEL{"!opFamilyPack AND checkShokaiFamipa==true?"}
    CHK_PRI_ROUTER -->|no| CHK_FP_CANCEL
    CHK_FP_CANCEL -->|yes| ERR_FP_CANCEL["Add error EKBD360__Q for family pack cancelled"]
    CHK_FP_CANCEL -->|no| CHK_MASTA
    ERR_FP_CANCEL --> CHK_MASTA

    CHK_MASTA --> CHK_TAB_MASTA{"tabletTnmtNm not empty AND tabletPayway != null?"}
    CHK_TAB_MASTA -->|yes| CHK_KK2521{"EKK2521B503CBSMsg1List size == 0?"}
    CHK_KK2521 -->|yes| ERR_KK2521["Loop payway items, add error EKBB890_KW for tablet payment plan"]
    ERR_KK2521 --> SET_TAB_10["Set TAB_NET_DSP_STAT"]
    SET_TAB_10 --> CHK_IP_STB{"IP_STB_RENTAL == true?"}
    CHK_KK2521 -->|no| CHK_IP_STB

    CHK_IP_STB -->|yes| CHK_SMP_TNMT{"smpTnmtNm empty?"}
    CHK_IP_STB -->|no| CHK_CRS
    CHK_SMP_TNMT -->|yes| ERR_SMP_TNMT["Add error EKBB870_NW for streaming media player name missing"]
    ERR_SMP_TNMT --> SET_TAB_11["Set TAB_NET_DSP_STAT"]
    SET_TAB_11 --> CHK_SMP_BUY{"isCallSmpAgntGet==false AND smpTnmtBuyUkTntshaNm empty?"}
    CHK_SMP_BUY -->|yes| ERR_SMP_BUY["Add error EKBC870_KW for SMP buyer name missing"]
    ERR_SMP_BUY --> SET_TAB_12["Set TAB_NET_DSP_STAT"]
    SET_TAB_12 --> CHK_SMP_SC{"scResult != null AND kk3271_tnmt_buy_err != null?"}
    CHK_SMP_BUY -->|no| CHK_SMP_SC
    CHK_SMP_SC -->|yes| CHK_SMP_ERR["Call checksmpErr"]
    CHK_SMP_ERR --> CHK_CRS

    CHK_CRS --> GET_CRS["Get eohnetcrschgflg"]
    GET_CRS --> CHK_MANSION{"MSKM_KIND == MSKM_KIND_MANSION?"}
    CHK_MANSION -->|yes| CHK_CONN{"connection method?"}
    CHK_MANSION -->|no| CHK_MEZON{"MSKM_KIND == MSKM_KIND_MEZON?"}
    CHK_CONN -->|ETHER| CRS_ETHER{"eohnetcrschgflg == true?"}
    CHK_CONN -->|OPTICAL| CRS_OPTICAL{"eohnetcrschgflg == true?"}
    CHK_CONN -->|VDSL| CRS_VDSL{"eohnetcrschgflg == true?"}
    CRS_ETHER -->|yes| ERR_CRS_ETHER["Add error EKBC890__Q for eo net course change"]
    CRS_OPTICAL -->|yes| ERR_CRS_OPTICAL["Add error EKBC890__Q for eo net course change"]
    CRS_VDSL -->|yes| SET_FUKA["setFukaPullDownSelect(null), add error EKB1220__I, reset eohnetcrschgflg=false"]
    CRS_ETHER -->|no| CHK_MEZON
    CRS_OPTICAL -->|no| CHK_MEZON
    CRS_VDSL -->|no| CHK_MEZON
    ERR_CRS_ETHER --> CHK_MEZON
    ERR_CRS_OPTICAL --> CHK_MEZON
    SET_FUKA --> CHK_MEZON
    CHK_MEZON -->|yes| CRS_MEZON{"eohnetcrschgflg == true?"}
    CHK_MEZON -->|no| CHK_OUCHI
    CRS_MEZON -->|yes| ERR_CRS_MEZON["Add error EKBC890__Q for eo net course change"]
    CRS_MEZON -->|no| CHK_OUCHI
    ERR_CRS_MEZON --> CHK_OUCHI

    CHK_OUCHI --> CALL_OUCHI["Call checkOuchiKikiHosho"]
    CALL_OUCHI --> CALL_MESH["Call checkMeshWifi"]
    CALL_MESH --> CHK_TYPEN{"isTypeNHantei == true?"}
    CHK_TYPEN -->|yes| CHK_TENYO{"tenyoSdNo not blank?"}
    CHK_TYPEN -->|no| FINAL_CHK

    CHK_TENYO -->|yes| VALIDATE_TENYO{"matches regex
^[TFEW][0-9]{10}$?"}
    VALIDATE_TENYO -->|no| CLEAR_YK["Clear WAO_YK_KIGEN, add error EKK0820_TW"]
    VALIDATE_TENYO -->|yes| CHK_YK_DATE{"validDate AND ykKigen >= minLimit?"}
    CHK_YK_DATE -->|invalid date| ERR_DATE["Add error EKB1040_JW for invalid date"]
    ERR_DATE --> SET_TAB_13["Set TAB_NET_DSP_STAT"]
    SET_TAB_13 --> SAVE_TENYO["Save tenyoSdNo and ykKigen"]
    CHK_YK_DATE -->|expired| ERR_EXPIRED["Add error EKBA880__Q for expired warranty"]
    CHK_YK_DATE -->|valid| SAVE_TENYO
    CLEAR_YK --> CHK_TYPEN_TEL

    SAVE_TENYO --> CHK_TYPEN_TEL{"TEL_MSKM_UM == true?"}
    CHK_TYPEN_TEL -->|yes| TYPE_N_DIV{"WAO_TENYO_DIV_01?"}
    CHK_TYPEN_TEL -->|no| FINAL_CHK

    TYPE_N_DIV -->|yes| TYPE_N_BMP{"bmpSbt null or empty?"}
    TYPE_N_DIV -->|no| TYPE_N_NONNEW{"WAO_TENYO_DIV_01 != waoTenyoDiv?"}
    TYPE_N_BMP -->|yes| ERR_BMP["Add error EKF2130_NW for missing BMP code"]
    ERR_BMP --> SET_TAB_14["Set TAB_NET_DSP_STAT"]
    SET_TAB_14 --> CHK_BMP_FLG{"bmpSbt not empty AND bmpSbtFlg empty?"}
    CHK_BMP_FLG -->|yes| ERR_BMP_FLG["Add error EKF2130_NW, reset Type-N BMP list"]
    ERR_BMP_FLG --> CHK_TELNO_NN{"WAO_TENYO_DIV_01 AND !WAO_BMP_NEW?"}
    CHK_BMP_FLG -->|no| CHK_TELNO_NN

    CHK_TELNO_NN -->|yes| CHK_TEL_BLANK{"telno blank?"}
    CHK_TELNO_NN -->|no| CHK_ITNMT

    CHK_TEL_BLANK -->|yes| ERR_TEL_BLANK["Add error EKF2130_NW for telephone number missing"]
    ERR_TEL_BLANK --> SET_TAB_15["Set TAB_NET_DSP_STAT"]
    SET_TAB_15 --> CHK_TEL_FMT{"chkTelephoneNumber2==true?"}
    CHK_TEL_FMT -->|no| ERR_TEL_FMT["Add error EKB0240_TW for telephone number format"]
    ERR_TEL_FMT --> SET_TAB_16["Set TAB_NET_DSP_STAT"]
    SET_TAB_16 --> CHK_TSJGS{"tsjgsCd blank?"}
    CHK_TSJGS -->|yes| ERR_TSJGS["Add error EKF2130_NW for current tel provider missing"]
    ERR_TSJGS --> SET_TAB_17["Set TAB_NET_DSP_STAT"]
    SET_TAB_17 --> CHK_ITNMT
    CHK_TEL_FMT -->|yes| CHK_TSJGS

    TYPE_N_NONNEW --> TEL_NN_CHECK{"telno not empty?"}
    TEL_NN_CHECK -->|yes| NONNEW_FMT{"chkTelephoneNumber2==true?"}
    NONNEW_FMT -->|no| ERR_NONNEW_TEL["Add error EKB0240_TW"]
    ERR_NONNEW_TEL --> SET_TAB_18["Set TAB_NET_DSP_STAT"]
    ERR_NONNEW_TEL --> CHK_ITNMT
    NONNEW_FMT -->|yes| CHK_ITNMT

    CHK_ITNMT --> ITNMT_EMPTY{"itnmtKshaMeigi not blank?"}
    ITNMT_EMPTY -->|yes| ITNMT_LEN{"itnmtKshaMeigi length > 45?"}
    ITNMT_EMPTY -->|no| ADD_CHK["Call adTkmkCheckKKW00124Error, adCheckKKW00124Error"]
    ITNMT_LEN -->|yes| ERR_ITNMT_LEN["Add error EKB0030_TW for transferor name length > 45"]
    ITNMT_LEN -->|no| ITNMT_FMT{"MixCharCheck valid?"}
    ITNMT_FMT -->|yes| ADD_CHK
    ITNMT_FMT -->|no| ERR_ITNMT_FMT["Add error EKB0190_TW for transferor name format"]
    ITNMT_FMT -->|yes| ADD_CHK
    ERR_ITNMT_LEN --> ITNMT_FMT
    ADD_CHK --> FINAL_CHK

    FINAL_CHK --> CHK_OPT_53{"MSKM_KIND==MANSION AND TK_HOSHIKI_PATTERN==53
1G_FLG==false AND 10G_FLG==false?"}
    CHK_OPT_53 -->|yes| ERR_OPT_53["Add error EKBB940_JW for registered mansion data status"]
    ERR_OPT_53 --> SET_TAB_FINAL["Set TAB_NET_DSP_STAT"]
    SET_TAB_FINAL --> RET_TRUE["Return true"]
    CHK_OPT_53 -->|no| RET_TRUE

    style START fill:#e1f5fe
    style RET_TRUE fill:#c8e6c9
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `isErrClear` | `boolean` | Controls whether to clear existing page error information before performing validation. When `true`, the method resets accumulated error info (`clearPageErrInfo`) and clears the network display status flag. This is used when re-entering the screen or re-triggering validation from a retry scenario. `true`: clear errors then check, `false`: skip clearing (used when errors should be accumulated across multiple checks). |
| 2 | `isCallTabletAgntGet` | `boolean` | Indicates whether this validation is being called from the `tabletAgntGet()` flow (tablet agent acquisition flow). When `true`, the tablet terminal buyer name validation is skipped because the buyer name has already been pre-filled by the tablet agent flow. `true`: called from tablet agent, `false`: standalone tablet purchase flow. |
| 3 | `isCallSmpAgntGet` | `boolean` | Indicates whether this validation is being called from the `smpAgntGet()` flow (streaming media player agent acquisition flow). When `true`, the SMP terminal buyer name validation is skipped because the buyer name has been pre-filled. Added in ANK-3987-00-00 (Netflix introduction support). `true`: called from SMP agent, `false`: standalone SMP purchase flow. |

**Instance fields / external state read:**

| Field / Source | Description |
|---------------|-------------|
| `getServiceFormBean()` | Retrieves the form bean's data bean access for reading/writing screen state |
| `dataBean.getDataBeanArray(KKW00121SFConst.SVC_MSKM_INFO)` | Service contract submission information data bean array |
| Session `SESSION_KEY_MSKMDATA` via `JCCWebCommon.getScreenInfo()` | Previously stored screen search results data (mskmInfoMap, netMap, usePlaceMap) |
| `dataBean.sendMessageBoolean()` calls | Various boolean flags from screen state (tablet buy, premium pack, IP-STB rental, family pack, etc.) |
| `dataBean.sendMessageString()` calls | Various string values from screen state (review result, commitment item, terminal names, etc.) |
| `getMansionMap()` | Retrieves mansion-specific data from session |
| `getOpRouterRental()`, `getOpTakinoRouterRental()` | Retrieves previous router rental settings for change detection |

## 4. CRUD Operations / Called Services

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `callService(paramMap, dataMap, outputMap, KKW00124_ERR_INFO)` | `KKSV0119` (Net CC Service) | Various (EO Net service contract validation data) | Calls the CC service for eo Net pre-registration validation. Returns boolean result indicating success/failure. |
| R | `mapper.setKKSV011901CC(paramBean, dataMap, JPCModelConstant.FUNC_CD_2, opeDate)` | `KKSV0119_KKSV0119OPDBMapper` | Mapping instance | Sets up service parameter mapper with operational date |
| R | `mapper.setKKSV011902CC(paramBean, dataMap, JPCModelConstant.FUNC_CD_2, opeDate, getMansionMap, netMap)` | `KKSV0119_KKSV0119OPDBMapper` | Mapping instance | Sets up second service parameter mapper with mansion map and net map data |
| R | `mapper.getNotFamilyPackRouterCount(paramBean, outputMap)` | `KKSV0119_KKSV0119OPDBMapper` | Router count check | Gets count of non-family-pack routers from service output |
| R | `JCCWebCommon.getOpeDate(this, null)` | `JCCWebCommon` | System operational date | Retrieves current operational date |
| R | `JCCWebCommon.getScreenInfo(this, SESSION_KEY_MSKMDATA)` | `JCCWebCommon` | Session data (in-memory) | Retrieves previously saved screen info for search result data |
| R | `JKKWebCommon.getPullDownCode()` | `JKKWebCommon` | Screen pull-down data | Retrieves selected values from pull-down list components |
| R | `JKKWebCommon.getPullDownIndex()` | `JKKWebCommon` | Screen pull-down data | Retrieves selected index from pull-down list |
| R | `JKKWebCommon.chkChgKkopRouter(this)` | `JKKKeiNewCmnLogicUtil` | - | Checks for co-located router change status |
| R | `JCCModelCommon.getOpeDate(this, null)` | `JCCModelCommon` | Operational date | Retrieves operational date |
| R | `JKKKeiNewCmnLogicUtil.checkShokaiFamipa(netMap)` | `JKKKeiNewCmnLogicUtil` | - | Checks if family pack was registered during initial introduction |
| R | `dataBean.sendMessageBoolean(KKW00101SFConst.OP_FAMILY_PACK)` | DataBean | Screen state | Gets family pack display flag |
| R | `dataBean.sendMessageBoolean(KKW00101SFConst.OP_SECURITY_PACK)` | DataBean | Screen state | Gets security pack display flag |
| R | `dataBean.sendMessageBoolean(KKW00101SFConst.TABLET_PREMIUM_PACK)` | DataBean | Screen state | Gets tablet premium pack display flag |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Class: `KKW00121SFLogic.checkAllGamenError()` | `checkAllGamenError()` -> `checkKKW00124Error(isErrClear, isCallTabletAgntGet, isCallSmpAgntGet)` | `callService [R] KKSV0119 (eo Net CC)` |
| 2 | Class: `KKW00121SFLogic.checkGamenError()` | `checkGamenError()` -> `checkKKW00124Error(isErrClear, isCallTabletAgntGet, isCallSmpAgntGet)` | `callService [R] KKSV0119 (eo Net CC)` |
| 3 | Class: `KKW00121SFLogic.smpAgntGet()` | `smpAgntGet()` -> `checkKKW00124Error(true, false, true)` | `callService [R] KKSV0119` |
| 4 | Class: `KKW00121SFLogic.tabletAgntGet()` | `tabletAgntGet()` -> `checkKKW00124Error(true, true, false)` | `callService [R] KKSV0119` |

**Terminal operations reachable from this method:**

| # | Terminal Operation | Type |
|---|-------------------|------|
| 1 | `callService` (KKSV0119) | Read/Validate |
| 2 | `addPageErrInfo` | Create (error info) |
| 3 | `sendMessageString` (setDataBean) | Write (screen state) |
| 4 | `getScreenInfo` (session) | Read (session data) |
| 5 | `checkShokaiFamipa` | Read (family pack check) |
| 6 | `chkChgKkopRouter` | Read (router check) |
| 7 | `checkJimuCommision` | Read (working document check) |
| 8 | `checkHyojunKojihi` | Read (standard labor cost check) |
| 9 | `checkPrivateRouter` | Read (private router check) |
| 10 | `checkOuchiKikiHosho` | Read (home terminal support check) |
| 11 | `checkMeshWifi` | Read (mesh WiFi check) |
| 12 | `getTenyoSdYkKigen` | Read (transfer warranty validity) |

## 6. Per-Branch Detail Blocks

**Block 1** — IF `(isErrClear == true)` (L3559)

> Clears existing page error information and resets the network display status when error reset is requested.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `clearPageErrInfo(KKW00124_ERR_INFO)` // Clear all page errors for KKW00124 |
| 2 | SET | `TAB_NET_DSP_STAT = ""` via `dataBean.sendMessageString()` // Reset network display status |

**Block 2** — IF `(skekkaTchi.length() == 0)` (L3575)

> Mandatory check: review result code SKEKKA_TCHI_22 must not be empty.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `dataBean.getDataBeanArray(KKW00121SFConst.SVC_MSKM_INFO)` // Get service contract data bean array |
| 2 | CALL | `dataBeanArray.getDataBean(KKW00124_TAB_INDEX)` // Get sub-tab index data bean |
| 3 | CALL | `subDataBean.sendMessageString(KKW00121SFConst.SKEKKA_TCHI_22, GET_VALUE)` // Get review result code |
| 4 | EXEC | `skekkaTchi.length() == 0` // Check if empty |
| 5 | CALL | `addPageErrInfo(EKB1320_NW, MSG_SVC_NET + SKEKKA_TCHI_22, ["SKEKKA_TCHI_1"..."SKEKKA_TCHI_4"], errInfo)` // Add mandatory error |
| 6 | SET | `TAB_NET_DSP_STAT = TAB_ERROR_ID` // Mark error state |

**Block 3** — `checkTmckSkekkaCdDetail()` (L3582)

> Validates the review result code (detail) via delegated method.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `checkTmckSkekkaCdDetail(KKW00124_TAB_INDEX, "SKEKKA_CD_DTAIL_NET", KKW00124_ERR_INFO, KKW00124_REP_MSG_03, TAB_NET_DSP_STAT)` |

**Block 4** — IF `(jimuCommision.length() == 0)` (L3591)

> Mandatory check: 事務手数料 (working document fee / JIMU_COMMISION) must not be empty.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `convertJimuCommisionIdxToCode(KKW00124_TAB_INDEX)` // Convert tab index to code |
| 2 | CALL | `subDataBean.sendMessageString(JIMU_COMMISION_22, GET_VALUE)` // Get working document fee value |
| 3 | EXEC | `jimuCommision.length() == 0` // Check if empty |
| 4 | CALL | `addPageErrInfo(EKB0010_TW, MSG_SVC_NET + JIMU_COMMISION_22, "JIMU_COMMISION", errInfo)` // Add mandatory error |
| 5 | SET | `TAB_NET_DSP_STAT = TAB_ERROR_ID` |

**Block 5** — IF `(JIMU_COMMISION_SHITEI.equals(jimuCommision) && jimuCommisionSitei.length() == 0)` (L3594)

> When the working document fee type is "指定額" (specified amount), the specified amount field is mandatory. `[-> JIMU_COMMISION_SHITEI="指定額"]`

| # | Type | Code |
|---|------|------|
| 1 | SET | `jimuCommisionSitei = subDataBean.sendMessageString(JIMU_COMMISION_SHITEI_22, GET_VALUE)` // Get specified amount value |
| 2 | EXEC | `JIMU_COMMISION_SHITEI.equals(jimuCommision)` // Check if fee type is "指定額" |
| 3 | EXEC | `jimuCommisionSitei.length() == 0` // Check if specified amount is empty |
| 4 | CALL | `addPageErrInfo(EKB0710_NW, MSG + JIMU_COMMISION + "に「指定額」;JIMU_COMMISION_SHITEI_22, "JIMU_COMMISION_SHITEI_NET", errInfo)` |
| 5 | SET | `TAB_NET_DSP_STAT = TAB_ERROR_ID` |

**Block 6** — GET_TABLET_INFO (L3600-3613)

> Retrieves tablet purchase-related data from the screen data bean and SMP (streaming media player) data.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `JKKWebCommon.getPullDownCode(dataBean, TABLET_TNMT_NM_LIST, SELECT_CD_17, NM_LIST_17)` // Get tablet terminal name |
| 2 | CALL | `JKKWebCommon.getPullDownCode(dataBean, TABLET_PAYWAY_LIST, SELECT_CD_58, CD_LIST_58)` // Get tablet payment method |
| 3 | CALL | `dataBean.sendMessageString(TABLET_TNMT_BUY_UK_TNTSHA_NM, GET_VALUE)` // Get tablet buyer name |
| 4 | CALL | `dataBean.sendMessageBoolean(TABLET_BUY, GET_VALUE)` // Get tablet purchase flag |
| 5 | CALL | `dataBean.sendMessageBoolean(TABLET_PREMIUM_PACK, GET_VALUE)` // Get premium pack flag |
| 6 | CALL | `JKKWebCommon.getPullDownCode(dataBean, SMP_TNMT_NM_LIST, SMP_SELECT_CD_18, SMP_NM_LIST_18)` // Get SMP terminal name |
| 7 | CALL | `dataBean.sendMessageString(SMP_TNMT_BUY_UK_TNTSHA_NM, GET_VALUE)` // Get SMP buyer name |

**Block 7** — IF `(tabletPremiumPack == true)` (L3614)

> When Premium Pack subscription is checked, validate that tablet purchase is also selected.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `tabletPremiumPack` // Check Premium Pack flag |
| 2 | IF | `(tabletBuy == false)` → Add error `EKBB860__Q` for "Smartlink Premium Pack;tablet purchase" |

**Block 8** — IF `(tabletBuy == true)` (L3623)

> When tablet purchase is selected, validate all tablet-related fields are properly populated.

| # | Type | Code |
|---|------|------|
| 1 | IF | `tabletTnmtNm empty()` → Add error `EKBB870_NW` for terminal name missing |
| 1.1 | SET | `TAB_NET_DSP_STAT = TAB_ERROR_ID` |
| 2 | IF | `tabletPayway == null` → Loop over payway items, add error `EKBB870_NW` for each payway field `TABLET_PAYWAY_i` |
| 2.1 | CALL | `dataBean.getDataBeanArray(TABLET_PAYWAY_LIST).getDataBean(0)` |
| 2.2 | CALL | `tabletPaywayBean.sendMessage(CD_LIST_58, GET_COUNT)` |
| 2.3 | FOR | `i = 0; i < count; i++` → `addPageErrInfo(EKBB870_NW, MSG + PAYWAY, "TABLET_PAYWAY_" + i, errInfo)` |
| 2.4 | SET | `TAB_NET_DSP_STAT = TAB_ERROR_ID` |
| 3 | IF | `!isCallTabletAgntGet AND tabletTnmtBuyUkTntshaNm empty()` → Add error `EKBC870_KW` for tablet buyer name missing |
| 3.1 | SET | `TAB_NET_DSP_STAT = TAB_ERROR_ID` |
| 4 | CALL | `JKKWebCommon.getPullDownIndex(dataBean, tabletTnmtNm, TABLET_TNMT_NM_LIST, NM_LIST_17)` // Get selected index |
| 5 | SET | `ghJudgeInfo = dataBean.sendMessageString(TABLET_GH_JUDGE_INFO_HOJI, GET_VALUE)` // Get GH judge info |
| 6 | SET | `ghFlg = false` // Initialize GH flag |
| 7 | SET | `ghJudgeInfo = ghJudgeInfo.replace("[", "").replace("]", "")` // Remove brackets |
| 8 | IF | `!isNullBlank(selectedIndex) AND ghJudgeInfo.split(",")[parseInt(selectedIndex)] == "1"` → `ghFlg = true` |
| 9 | IF | `!tabletPremiumPack AND !ghFlg` → Add error `EKBB880__Q` for tablet premium pack subscription required |

**Block 9** — Security/Family Pack validation (L3651-3722)

> Retrieves previously stored pack data from session and validates consistency when pack visibility controls are all hidden.

| # | Type | Code |
|---|------|------|
| 1 | SET | `preMap1 = JCCWebCommon.getScreenInfo(this, SESSION_KEY_MSKMDATA)` // Get session data |
| 2 | SET | `mskmInfoMap1 = (HashMap)preMap1.get(MSKM_INFO_KEY_NAME)` |
| 3 | SET | `kksv008104CCMap = (HashMap)mskmInfoMap1.get("KKSV008104CC")` |
| 4 | SET | `wribList = (ArrayList)kksv008104CCMap.get("kk0451_EKK0451B030CBSMsg1List")` // Discount service list |
| 5 | SET | `opMsg1List = (ArrayList)kksv008104CCMap.get("EKK0351B512CBSMsg1List")` // OP service list |
| 6 | CALL | `dataBean.sendMessageBoolean(OP_FAMILY_PACK, GET_VALUE)` // Get family pack display |
| 7 | CALL | `dataBean.sendMessageBoolean(OP_SECURITY_PACK, GET_VALUE)` // Get security pack display |
| 8 | CALL | `dataBean.sendMessageBoolean(TABLET_PREMIUM_PACK, GET_VALUE)` // Get tablet premium display |
| 9 | FOR | `childMap in wribList` → Check `kk0451_wrib_svc_cd` against `WRIB_SVC_CD_SECURITY_PACK="W00000010"` and `WRIB_SVC_FAMIPA="W00000006"` |
| 10 | FOR | `childMap in opMsg1List` → Check `kk0351_op_svc_cd` against `OP_SVC_CD_SMARTLINK_PREMIUM="B077"` |
| 11 | IF | `opFamilyPackDsp==false AND opSecurityPackDsp==false AND tabletPremiumPackDsp==false` → Check if any pack is active → Add error `EKBD360__Q` |

**Block 10** — CC Service Call (L3727-3750)

> Invokes the eo Net CC service for comprehensive validation.

| # | Type | Code |
|---|------|------|
| 1 | SET | `paramBean = { dataBean }` |
| 2 | SET | `paramMap.put(TELEGRAM_INFO_USECASE_ID, KKSV0119)` // Set use case ID |
| 3 | CALL | `opeDate = JCCWebCommon.getOpeDate(this, null)` // Get operational date |
| 4 | SET | `preMap = JCCWebCommon.getScreenInfo(this, SESSION_KEY_MSKMDATA)` // Get session data |
| 5 | SET | `mskmInfoMap = (HashMap)preMap.get(MSKM_INFO_KEY_NAME)` |
| 6 | SET | `netMap = (HashMap)mskmInfoMap.get("KKSV008104CC")` |
| 7 | SET | `usePlaceMap = (HashMap)mskmInfoMap.get("KKSV008110CC")` |
| 8 | SET | `mapper = new KKSV0119_KKSV0119OPDBMapper()` // Create mapper |
| 9 | CALL | `mapper.setKKSV011901CC(paramBean, dataMap, FUNC_CD_2, opeDate)` |
| 10 | CALL | `mapper.setKKSV011902CC(paramBean, dataMap, FUNC_CD_2, opeDate, mansionMap, netMap)` |
| 11 | CALL | `callService(paramMap, dataMap, outputMap, KKW00124_ERR_INFO)` → Returns boolean |
| 12 | IF | `callService == false` → `TAB_NET_DSP_STAT = TAB_ERROR_ID` |

**Block 11** — Post-Registration Checks (L3752-3872)

> When SVC_KEI_NO is non-empty (new net added during pre-registration), perform additional validation checks.

| # | Type | Code |
|---|------|------|
| 1 | SET | `svcKeiNo = subDataBean.sendMessageString(SVC_KEI_NO_22, GET_VALUE)` |
| 2 | IF | `svcKeiNo.length() > 0` |
| 2.1 | CALL | `opFamilyPack = dataBean.sendMessageBoolean(OP_FAMILY_PACK, GET_VALUE)` |
| 2.2 | IF | `!opFamilyPack` |
| 2.2.1 | CALL | `opRouterRental = JKKWebCommon.getPullDownCode(...)` |
| 2.2.2 | CALL | `beforeOpRouterRental = getOpRouterRental(usePlaceMap)` |
| 2.2.3 | CALL | `beforeOpTakinoRouterRental = getOpTakinoRouterRental(usePlaceMap)` |
| 2.2.4 | IF | `OP_ROUTER_RENTAL_CD_MUSEN.equals(opRouterRental) && ...` → `routerRantalFeeChgFlg = true` // Rental fee changed |
| 2.2.5 | IF | `routerRantalFeeChgFlg` → Add error `EKB2860__Q` |
| 2.3 | IF | `chkChgKkopRouter(this) == null && opFamilyPack && mapper.getNotFamilyPackRouterCount() > 0` → Add error `EKB5880_KW` |
| 2.4 | IF | `checkJimuCommision() != 0` → Add error `EKB7900__Q` // Working document changed |
| 2.5 | IF | `checkHyojunKojihi() != 0` → Add error `EKB8460__Q` // Standard labor cost changed |
| 2.6 | IF | `checkPrivateRouter(usePlaceMap, dataBean)` → Add error `EKBA510_KW` // Private router |
| 2.7 | IF | `!opFamilyPack && checkShokaiFamipa(netMap)` → Add error `EKBD360__Q` // Family pack cancelled during intro |

**Block 12** — Master Check: Tablet Payment Plan Validation (L3875-3889)

> Validates tablet payment plan data returned from the CC service.

| # | Type | Code |
|---|------|------|
| 1 | IF | `!tabletTnmtNm.isEmpty() AND tabletPayway != null` |
| 1.1 | SET | `parentMap = (HashMap)outputMap.get("KKSV011902CC")` |
| 1.2 | IF | `parentMap.get("kk2521_EKK2521B503CBSMsg1List") != null AND size == 0` |
| 1.2.1 | CALL | Loop over payway items → Add error `EKBB890_KW` for each `TABLET_PAYWAY_i` |
| 1.2.2 | SET | `TAB_NET_DSP_STAT = TAB_ERROR_ID` |

**Block 13** — IP-STB / Streaming Media Player Validation (L3891-3972)

> Validates streaming media player (SMP) purchase fields when IP-STB rental is active.

| # | Type | Code |
|---|------|------|
| 1 | IF | `dataBean.sendMessageBoolean(IP_STB_RENTAL, GET_VALUE)` |
| 1.1 | IF | `smpTnmtNm empty()` → Add error `EKBB870_NW` for SMP terminal name missing |
| 1.1.1 | SET | `TAB_NET_DSP_STAT = TAB_ERROR_ID` |
| 1.2 | IF | `!isCallSmpAgntGet AND smpTnmtBuyUkTntshaNm empty()` → Add error `EKBC870_KW` for SMP buyer name missing |
| 1.2.1 | SET | `TAB_NET_DSP_STAT = TAB_ERROR_ID` |
| 1.3 | SET | `scResult = (HashMap)outputMap.get("KKSV011902CC")` |
| 1.4 | IF | `scResult != null` → Get `kk3271_tnmt_buy_uk_tntsha_nm_err` |
| 1.5 | IF | `errflg != null` → `checksmpErr(errflg, "[Net] SMP buyer name", "SMP_TNMT_BUY_UK_TNTSHA_NM", errInfo, TAB_NET_DSP_STAT)` |

**Block 14** — Course Change Check: Connection Method (L3975-4008)

> Validates eo Net course change flags based on customer type and connection method.

| # | Type | Code |
|---|------|------|
| 1 | SET | `eohnetcrschgflg = dataBean.sendMessageBoolean(EOH_NET_CRS_CHG_FLG, GET_VALUE)` |
| 2 | IF | `MSKM_KIND == MSKM_KIND_MANSION` (`"2"`) |
| 2.1 | IF | `MANSION_KAISEN_HSK_CD_ETHER.equals(connection)` (`"1"`: Ethernet) |
| 2.1.1 | IF | `eohnetcrschgflg` → Add error `EKBC890__Q` |
| 2.2 | IF | `MANSION_KAISEN_HSK_CD_OPTICAL.equals(connection)` (Optical fiber) |
| 2.2.1 | IF | `eohnetcrschgflg` → Add error `EKBC890__Q` |
| 2.3 | IF | `MANSION_KAISEN_HSK_CD_VDSL.equals(connection)` (VDSL) |
| 2.3.1 | IF | `eohnetcrschgflg` → `setFukaPullDownSelect(null)`, add error `EKB1220__I`, reset `eohnetcrschgflg=false` |
| 3 | IF | `MSKM_KIND == MSKM_KIND_MEZON` (`"3"`) |
| 3.1 | IF | `eohnetcrschgflg` → Add error `EKBC890__Q` |

**Block 15** — Delegated Checks (L4010-4017)

> Calls specialized validation methods for home terminal support and mesh WiFi.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `checkOuchiKikiHosho(this, KKW00124_ERR_INFO)` // ANK-3484: Home terminal support input check (EKBF200-KW) |
| 2 | CALL | `checkMeshWifi(this, KKW00124_ERR_INFO)` // ANK-3825: In-home rental service input check (EKBF450-KW) |

**Block 16** — Type-N Validation (L4019-4144)

> Validates Type-N (WAO type N) specific fields: transfer warranty number, telephone number, and transferor name.

| # | Type | Code |
|---|------|------|
| 1 | IF | `isTypeNHantei() == true` |
| 1.1 | SET | `ykKigen = ""` |
| 1.2 | SET | `tenyoSdNo = JKKStringUtil.nullToBlank(dataBean.sendMessageString(WAO_TENYO_SHODAKU_NO, GET_VALUE))` |
| 1.3 | IF | `!isNullBlank(tenyoSdNo)` |
| 1.3.1 | IF | `!tenyoSdNo.matches("^[TFEW][0-9]{10}$")` → Clear `WAO_YK_KIGEN`, add error `EKK0820_TW` |
| 1.3.2 | ELSE | `ykKikan = dataBean.sendMessageString(WAO_YK_KIKAN, GET_VALUE)` |
| 1.3.3 | SET | `minLimit = JPCDateUtil.addDay(getOpeDate(), Integer.parseInt(ykKikan))` |
| 1.3.4 | CALL | `ykKigen = getTenyoSdYkKigen(dataBean, tenyoSdNo)` |
| 1.3.5 | IF | `!isValidDate(ykKigen)` → Add error `EKB1040_JW` for invalid warranty date |
| 1.3.6 | IF | `ykKigen.compareTo(minLimit) < 0` → Add error `EKBA880__Q` for expired warranty (ST-2025) |
| 1.4 | SET | `dataBean.sendMessageString(WAO_TENYO_SHODAKU_NO_MOTO, SET_VALUE, tenyoSdNo)` // Save transfer warranty number |
| 1.5 | SET | `dataBean.sendMessageString(WAO_YK_KIGEN, SET_VALUE, ykKigen)` // Reset validity period |
| 1.6 | IF | `TEL_MSKM_UM == true` (telephone subscription present) |
| 1.6.1 | SET | `bmpSbt = getPullDownCode(...)` |
| 1.6.2 | SET | `telno = dataBean.sendMessageString(TYPEN_TELNO, GET_VALUE)` |
| 1.6.3 | SET | `bmpSbtFlg = dataBean.sendMessageString(TYPEN_BMP_SBT_FLG, GET_VALUE)` |
| 1.6.4 | SET | `tsjgsCd = getPullDownCode(...)` // Current tel provider |
| 1.6.5 | SET | `waoTenyoDiv = getPullDownCode(...)` // Transfer division |
| 1.6.6 | IF | `WAO_TENYO_DIV_01.equals(waoTenyoDiv)` (new transfer) |
| 1.6.6.1 | IF | `isNullEmpty(bmpSbt)` → Add error `EKF2130_NW` for missing phone number code |
| 1.6.6.2 | IF | `!isNullEmpty(bmpSbt) && isNullEmpty(bmpSbtFlg)` → Add error `EKF2130_NW`, reset BMP list |
| 1.6.7 | IF | `WAO_TENYO_DIV_01 && !WAO_BMP_NEW.equals(bmpSbt)` (`WAO_BMP_NEW="0"`) |
| 1.6.7.1 | IF | `isNullBlank(telno)` → Add error `EKF2130_NW` for telephone number missing |
| 1.6.7.2 | ELSE IF | `!chkTelephoneNumber2(telno)` → Add error `EKB0240_TW` for tel format |
| 1.6.7.3 | IF | `isNullBlank(tsjgsCd)` → Add error `EKF2130_NW` for current provider missing |
| 1.6.8 | ELSE IF | `!WAO_TENYO_DIV_01.equals(waoTenyoDiv)` (not new transfer) |
| 1.6.8.1 | IF | `!isNullBlank(telno) && !chkTelephoneNumber2(telno)` → Add error `EKB0240_TW` |
| 1.6.9 | SET | `itnmtKshaMeigi = dataBean.sendMessageString(TYPEN_TEL_ITNMT_KYS_MEIGI, GET_VALUE)` // Transferor name |
| 1.6.9.1 | IF | `!isNullBlank(itnmtKshaMeigi)` |
| 1.6.9.1.1 | IF | `itnmtKshaMeigi.length() > 45` → Add error `EKB0030_TW` for name length exceeded |
| 1.6.9.1.2 | IF | `!MixCharCheck.isKisyuIzonNmAdCheck(itnmtKshaMeigi)` → Add error `EKB0190_TW` for name format |
| 1.6.9.2 | CALL | `adTkmkCheckKKW00124Error()` // Address item check |
| 1.6.9.3 | CALL | `adCheckKKW00124Error()` // Address count check |

**Block 17** — Optical Fiber Mansion 5G/10G Flag Check (L4147-4158)

> For mansion optical fiber customers with pattern code 53, validates that 1G or 10G flag is set. `[-> TK_HOSHIKI_PATTERN_CD_53="53"]`

| # | Type | Code |
|---|------|------|
| 1 | IF | `MSKM_KIND == MANSION` (`"2"`) AND `TK_HOSHIKI_PATTERN_CD == "53"` AND `KNYKEI_NET_1G_MKM_KH_MANS_FLG == false` AND `KNYKEI_NET_10G_MKM_KH_MANS_FLG == false` |
| 1.1 | CALL | `addPageErrInfo(EKBB940_JW, "Registered mansion data status", "", errInfo)` |
| 1.2 | SET | `TAB_NET_DSP_STAT = TAB_ERROR_ID` |

**Block 18** — RETURN (L4159)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return true;` // Always returns true (validation errors are communicated via addPageErrInfo) |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| KKW00124 | Screen ID | Pre-registration screen for eo Net service contracts (照枠前登録 — "Before Confirmation Frame Registration") |
| KKW00124_ERR_INFO | Constant | Error information identifier for KKW00124 screen validation errors |
| SKEKKA_TCHI_22 | Field | Review result code — classification of the service review outcome |
| SKEKKA_TCHI_1/2/3/4 | Fields | Review result sub-items — multiple review result categories |
| JIMU_COMMISION | Field | 事務手数料 (Working document fee) — administrative handling fee for service contract processing |
| JIMU_COMMISION_22 | Field | Working document fee field (version 22) |
| JIMU_COMMISION_SHITEI | Constant | "指定額" (Specified amount) — working document fee type indicating a custom specified fee amount |
| JIMU_COMMISION_SHITEI_22 | Field | 事務手数料（指定）(Working document fee — specified amount) — the custom fee amount field |
| TABLET_TNMT_NM | Field | Tablet terminal name — the selected tablet device model name |
| TABLET_PAYWAY | Field | Tablet payment method — how the tablet device will be paid for |
| TABLET_TNMT_BUY_UK_TNTSHA_NM | Field | Tablet terminal purchase responsibility name — the name of the person responsible for tablet purchase |
| TABLET_BUY | Field | Tablet purchase flag — whether the customer is purchasing a tablet device |
| TABLET_PREMIUM_PACK | Field | Tablet premium pack — Premium Pack subscription for tablet devices |
| TABLET_GH_JUDGE_INFO_HOJI | Field | GH terminal judgment info — stored data indicating whether a terminal is GH (Giga-Hi-Speed) type |
| ghFlg | Variable | GH terminal flag — true if the selected terminal is a high-speed GH terminal |
| SMS/TNMT | Field | Streaming media player terminal — connected streaming media device (e.g., Netflix player) |
| SMP_TNMT_BUY_UK_TNTSHA_NM | Field | SMP terminal purchase responsibility name |
| IP_STB_RENTAL | Field | IP-STB rental flag — indicates whether an IP Set-Top Box is being rented |
| MSKM_KIND | Field | 申込種類 (Application type) — customer type classification |
| MSKM_KIND_MANSION | Constant | `"2"` — Mansion type customer |
| MSKM_KIND_MEZON | Constant | `"3"` — Mezohn (apartment) type customer |
| MANSION_KAISEN_HOSHIKI | Field | マンション変更方式 (Mansion connection method) — the network connection method for the mansion |
| MANSION_KAISEN_HSK_CD_ETHER | Constant | `"1"` — Ethernet connection method |
| MANSION_KAISEN_HSK_CD_OPTICAL | Constant | Optical fiber connection method |
| MANSION_KAISEN_HSK_CD_VDSL | Constant | VDSL connection method |
| eohnetcrschgflg | Variable | eo Net course change flag — whether the network course has been changed |
| OP_FAMILY_PACK | Field | フォミリーパック (Family Pack) — bundled service package for family members |
| OP_SECURITY_PACK | Field | セキュリティパック (Security Pack) — security service package. Code: `W00000010` |
| OP_SVC_CD_SMARTLINK_PREMIUM | Constant | `B077` — Smart Premium service code |
| WRIB_SVC_CD_SECURITY_PACK | Constant | `W00000010` — Security Pack discount service code |
| WRIB_SVC_FAMIPA | Constant | `W00000006` — Family Pack discount service code |
| chkChgKkopRouter | Method | Checks for co-located router changes (宅内ルーター変更) |
| checkJimuCommision | Method | Validates working document fee changes |
| checkHyojunKojihi | Method | Validates standard labor cost changes (標準工事費区分変更) |
| checkPrivateRouter | Method | Validates private router configuration |
| checkShokaiFamipa | Method | Checks if family pack was registered during initial introduction (紹介時) |
| checkOuchiKikiHosho | Method | Home terminal support input check (おうち機器補償入力チェック) — ANK-3484 |
| checkMeshWifi | Method | In-home rental mesh WiFi service input check (宅内機器レンタルサービス入力チェック) — ANK-3825 |
| isTypeNHantei | Method | Type-N judgment — determines if the customer is a Type-N (WAO type N) subscriber |
| WAO_TENYO_SHODAKU_NO | Field | 転用承諾番号 (Transfer approval number) — number for line transfer approval |
| WAO_YK_KIGEN | Field | 有効期限 (Validity period) — expiration date of the transfer approval |
| WAO_YK_KIKAN | Field | 有効期間 (Validity period in days) — number of days for the validity period |
| WAO_TENYO_DIV_01 | Constant | `"01"` — New transfer division type (転用:新規) |
| WAO_BMP_NEW | Constant | `"0"` — New number acquisition type (新番号を取得する) |
| TYPEN_BMP_SBT | Field | 番号種別 (Phone number type) — classification of phone number (new vs. existing) |
| TYPEN_TELNO | Field | 電話番号 (Telephone number) — customer's telephone number |
| TYPEN_TEL_ITNMT_KYS_MEIGI | Field | 移転元契約者名義 (Transferor contract holder name) — name of the original contract holder for number transfer |
| telno | Variable | Telephone number input value |
| itnmtKshaMeigi | Variable | Transferor contract holder name (short form) |
| tenyoSdNo | Variable | Transfer approval number (short form) |
| ykKigen | Variable | Validity period date string |
| ykKikan | Variable | Validity period in days |
| bmpSbt | Variable | Phone number type (short form) |
| bmpSbtFlg | Variable | Phone number type flag |
| tsjgsCd | Variable | Current tel service provider code (現在ご利用中の電話サービス提供事業者) |
| waoTenyoDiv | Variable | WAO transfer division |
| MKM_INFO_KEY_NAME | Field | Session key for service contract information map |
| SESSION_KEY_MSKMDATA | Field | Session key for mansion search data |
| KKSV0119 | Constant | Use case ID for eo Net CC service call |
| OP_ROUTER_RENTAL_CD_MUSEN | Constant | `"1"` — No router rental selected (無料ルーター) |
| TAB_NET_DSP_STAT | Constant | ネット表示状態 (Network display status) — screen display status flag |
| TAB_ERROR_ID | Constant | Error status identifier for tab display |
| MSG_SVC_NET | Constant | Error message prefix for Net service |
| MSG_HYOUJYUN_KOJIHI | Constant | Standard labor cost classification message |
| MSG_PRIVATE_COURSE | Constant | Private course error message text |
| MSG_ROUTER | Constant | Router error message text |
