# Business Logic - JKKKikiIchiranIkkatsuCC.isKapChk() [1023 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `com.fujitsu.futurity.bp.custom.common.JKKKikiIchiranIkkatsuCC` |
| Layer | Common Component / CC (Shared Cross-Cutting Component) |
| Module | `common` (Package: `com.fujitsu.futurity.bp.custom.common`) |

## 1. Role

### JKKKikiIchiranIkkatsuCC.isKapChk()

`isKapChk` performs comprehensive installment contract (割賦 = "kafu") validation for devices listed on a service equipment list screen within a Japanese telecommunications order fulfillment system. The method validates whether the customer's installment equipment meets business rules for registration, non-registration (credit-only), and lump-sum payment scenarios. It implements a multi-stage validation dispatch pattern: early-return optimization for non-installment cases, contract history verification for registered tablets, model code cross-referencing for cradle-linked devices, payment method validation against bank account and credit card status, Smart Link premium service capacity checks, and total tablet count enforcement. Its role in the larger system is as a gatekeeping validation component - if any check fails, it returns `false` and populates error messages in the `ccMsg` map, preventing downstream processing of invalid installment device configurations. The method handles three distinct installation types defined by `kapAddKey`: registered installment devices (`"2"`), non-registered installment devices (`"1"`), and credit-only devices (`"0"`), routing validation logic appropriately for each.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["isKapChk Start"])
    END_NODE(["Return true"])

    START --> GET_KAP_ADD["Get kapAddKey from temporaryData"]
    GET_KAP_ADD --> GET_DEL_LIST["Get kapsDelList from temporaryData"]
    GET_DEL_LIST --> EARLY_CHK{"kapAddKey equals 1 AND kapsDelList empty?"}
    EARLY_CHK -->|Yes| EARLY_RET_TRUE["Return true"]
    EARLY_CHK -->|No| CAP_CHK{"kapAddKey equals 2 or 1?"}
    EARLY_RET_TRUE --> END_NODE
    CAP_CHK -->|Yes| GET_CONTRACT_LIST["execEKK2541B002 Contract history list"]
    CAP_CHK -->|No| FUNC_CODE_CHK{"func_code equals 2?"}
    GET_CONTRACT_LIST --> NO_TABLET_CHK{"kapAddKey equals 1?"}
    NO_TABLET_CHK -->|Yes| MSG_CHECK{"contract list empty?"}
    NO_TABLET_CHK -->|No| LOOP_CONTRACT["Loop ekk2541b002cbsMsg"]
    MSG_CHECK -->|Empty| ERR_MSG_1["setMessageInfo EKBB710-KW"]
    ERR_MSG_1 --> FALSE_RET_1["Return false"]
    MSG_CHECK -->|Not empty| LOOP_CONTRACT
    LOOP_CONTRACT --> KAPP_CHK{"isCheckKappuInfo1 OR isCheckKappuInfo2 true?"}
    KAPP_CHK -->|Both false| ERR_MSG_2["setMessageInfo EKBB710-KW"]
    ERR_MSG_2 --> FALSE_RET_1
    LOOP_CONTRACT --> FUNC_CODE_CHK
    FUNC_CODE_CHK -->|Yes| ADD_CHK{"kapAddKey equals 2?"}
    FUNC_CODE_CHK -->|No| LUMP_CHK{"kapAddKey equals 1?"}
    ADD_CHK -->|Yes| EXEC_ADD["execEKK2331B001_Add Model check"]
    ADD_CHK -->|No| TEMP_PAY_MSG["setMessageInfo EKBB740-KW"]
    LUMP_CHK -->|Yes| EXEC_LUMP["execEKK2331B001_LumpSum Model check"]
    LUMP_CHK -->|No| CRADLE_CHK{"kapAddKey equals 0?"}
    CRADLE_CHK -->|Yes| EXEC_LUMP
    CRADLE_CHK -->|No| DEL_CHECK{"kapsDelList not empty?"}
    DEL_CHECK -->|Yes| DEL_MSG["setMessageInfo EKBB750--I"]
    DEL_CHECK -->|No| PAY_CHK{"kapAddKey equals 2 or 1 or 0?"}
    DEL_MSG --> PAY_CHK
    PAY_CHK -->|Yes| PAY_SECTION["Payment section: fetch SCs and init vars"]
    PAY_CHK -->|No| SMART_CHECK{"kapAddKey equals 2?"}
    SMART_CHECK -->|Yes| SMART_SECTION["Smart Link premium check section"]
    SMART_SECTION --> END_NODE
    PAY_SECTION --> FUNC_CHK2{"func_code equals 2?"}
    FUNC_CHK2 -->|Yes| TABLET_LOOP["Loop kkiIchiranList count tablets"]
    FUNC_CHK2 -->|No| SMART_CHECK
    TABLET_LOOP --> PAY_MANS{"prcGgrpCd equals 16?"}
    PAY_MANS -->|Yes| MANS_INFO["getManshonInfo and fetch svChrgStaymd"]
    PAY_MANS -->|No| SV_CHRG_DEFAULT["Get svChrgStaymd from EKK0081A010"]
    MANS_INFO --> SV_CHRG_DEFAULT
    SV_CHRG_DEFAULT --> SV_CHRG_NORMALIZE["Normalize svChrgStaymd plus 2 months"]
    SV_CHRG_NORMALIZE --> TABLET_LIMIT{"tabletCnt > 1 AND unyo < svChrgStadate?"}
    TABLET_LIMIT -->|Yes| WARN_MSG1["setMessageInfo EKBE111--Q"]
    WARN_MSG1 --> MULTI_CHK{"(craedolCnt > 1 OR tabletCnt > 1) AND unyo < svChrgStadate?"}
    MULTI_CHK -->|Yes| REVIEW_CHK{"Review status AND underConstruction"}
    MULTI_CHK -->|No| PAY_LIMIT_CHECK{"tabletCnt == 1 AND unyo >= svChrgStadate?"}
    REVIEW_CHK -->|errFlg| FALSE_RET_2["Return false"]
    REVIEW_CHK -->|ok| PAY_LIMIT_CHECK
    PAY_LIMIT_CHECK -->|Yes| SEIKY_CHECK["EKK0491B507 + EKK0491A010 + isCheckSeikyWay"]
    SEIKY_CHECK -->|madoguchi| SEIKY_ERR["setMessageInfo EKBE112--Q"]
    SEIKY_ERR --> SMART_SECTION
    SEIKY_CHECK -->|ok| SMART_SECTION
    PAY_LIMIT_CHECK -->|No| SMART_SECTION
    SMART_SECTION --> SMART_LOOP["Loop devices check Smart Link max_op_svc_cnt"]
    SMART_LOOP --> SMART_LIMIT{"now_op_svc_cnt >= max_op_svc_cnt?"}
    SMART_LIMIT -->|Yes| SMART_ERR["setMessageInfo EKBB650-KW"]
    SMART_ERR --> FALSE_RET_2
    SMART_LIMIT -->|No| TABLET_TOTAL_CHK{"func_code equals 2?"}
    TABLET_TOTAL_CHK -->|Yes| TABLET_TOTAL_LOOP["Loop devices count total tablets"]
    TABLET_TOTAL_CHK -->|No| RETURN_TRUE["Return true"]
    TABLET_TOTAL_LOOP --> TABLET_TOTAL_LIMIT{"tabletCnt > tabTotaCntMax?"}
    TABLET_TOTAL_LIMIT -->|Yes| WARN_MSG2["setMessageInfo EKBE114--Q"]
    TABLET_TOTAL_LIMIT -->|No| RETURN_TRUE
    WARN_MSG2 --> RETURN_TRUE
```

**CRITICAL - Constant Resolution:**

| Constant | Value | Business Meaning |
|----------|-------|-----------------|
| `KAP_ADD_KEY` | `"kapAddkey"` | Key in temporaryData storing installment eligibility classification |
| `KAP_ADD_CD_OK_TABLET` | `"2"` | Registered installment device (tablet with installment registration) |
| `KAP_ADD_CD_NO_TABLET` | `"1"` | Non-registered installment device (tablet without installment registration) |
| `KAP_ADD_CD_NO_CRADLE` | `"0"` | Credit-only device (no cradle/register, payment by credit only) |
| `KAPS_DEL_LIST` | `"kapsDelList"` | Key in temporaryData storing list of devices to be deleted |
| `KAPS_CRADLE_LIST` | `"kapsCradleList"` | Key in temporaryData storing cradle-attached device model code list |
| `FUNC_CODE_2` | `"2"` | Function code indicating screen update/add mode (vs view mode `"1"`) |
| `ERR_FLG_ERR` | `"E"` | Error flag value for error-level messages |
| `ERR_FLG_WARNING` | `"W"` | Warning flag value for warning-level messages |
| `MAX_DATE` | `99991231` | Maximum date constant used as sentinel |
| `PAY_MANS_TYPE` | `"16"` | Payment group code for mansion-type payment |
| `PAY_ZENKO_IKKATSU` | `"01"` | Payment method code for all-unified (all-household unified) payment |
| `OP_SVC_CD_B077` | `"B077"` | Option service code for internet service |
| `TAKNKIKI_SBT_CD_TABLET` | Device-specific | Sub-type code for tablet devices |
| `TAKNKIKI_SBT_CD_TABLET_CRADLE` | Device-specific | Sub-type code for tablet cradle devices |
| `KKTK_SVC_KEI_STAT_KAIYAKU` | `"910"` | Device service contract status: cancelled |
| `KKTK_SVC_KEI_STAT_CANCEL` | `"920"` | Device service contract status: cancellation completed |
| `KK_KAP_SHR_CNT_MAX` | Business parameter | Maximum simultaneous installment contracts (from business param) |
| `KK_KAP_WRBK_MAX` | Business parameter | Maximum premium pack discount applicable units (from business param) |
| `KK_TAB_TOTAL_CNT_MAX` | Business parameter | Maximum total tablet count (from business param) |
| `IN_KK_ICHIRAN_LIST` | `"inKkiIchiranList"` | Key in ccMsg for equipment list |
| `TEMPLATE_ID_EKK0081A010` | `"EKK0081A010"` | Service contract agreement inquiry template |
| `TEMPLATE_ID_EKK0361B001` | `"EKK0361B001"` | Option service contract ISP list template |
| `TEMPLATE_ID_EKK0491B507` | `"EKK0491B507"` | Billing contract list (service contract number) template |
| `TEMPLATE_ID_EKK0491B511` | `"EKK0491B511"` | Billing contract list (future reservation acquisition) template |
| `TEMPLATE_ID_EKK0491A010` | `"EKK0491A010"` | Billing agreement inquiry (payment method/forced window/credit card) template |
| `TEMPLATE_ID_EKK0501A010` | `"EKK0501A010"` | Credit card agreement inquiry (account status) template |
| `TEMPLATE_ID_EKK0521A010` | `"EKK0521A010"` | Credit card agreement inquiry (status/expiration) template |
| `SVC_KEI_STAT_UKEZUMI` | `"010"` | Service contract status: reception completed |
| `SVC_KEI_STAT_SHOSAZUMI` | `"020"` | Service contract status: review completed |
| `PAYWAY_KOZAFURIKAE` | Payment code | Payment method: bank account transfer substitution |
| `PAYWAY_YUBIN` | Payment code | Payment method: postal auto-debit |
| `PAYWAY_CREDIT` | Payment code | Payment method: credit card |
| `PAYWAY_MADOGUCHI` | Payment code | Payment method: counter (manual payment) |

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `handle` | `SessionHandle` | Database session handle for executing service component calls and data queries |
| 2 | `scCall` | `ServiceComponentRequestInvoker` | Invoker for calling downstream service components (CBS/SC) that perform actual DB operations |
| 3 | `param` | `IRequestParameterReadWrite` | Request parameter interface used for passing data to and from service components |
| 4 | `dataMapKey` | `String` | Key identifying the data map used by service components for parameter binding |
| 5 | `temporaryData` | `HashMap<String, Object>` | Temporary data storage carrying installment classification (`kapAddKey`), deletion list (`kapsDelList`), cradle model list (`kapsCradleList`), business parameters (e.g., `KK_KAP_SHR_CNT_MAX`), and SC results (`TEMPLATE_ID_EKK0081A010`) |
| 6 | `ccMsg` | `HashMap<String, Object>` | Communication message map containing function code (`func_code`), equipment list (`IN_KK_ICHIRAN_LIST`), operation date (`unyo_ymd`), service contract number (`svc_kei_no`), and where error/warning messages are written via `setMessageInfo` |

**External State Read:**
- `temporaryData.get(KAP_ADD_KEY)` - Installment eligibility classification flag
- `temporaryData.get(KAPS_DEL_LIST)` - List of devices flagged for deletion
- `temporaryData.get(KAPS_CRADLE_LIST)` - List of cradle-attached device model codes
- `temporaryData.get(TEMPLATE_ID_EKK0081A010)` - Service contract agreement result
- `ccMsg.get("func_code")` - Current operation mode (view vs. update)
- `ccMsg.get("unyo_ymd")` - Current operation date (YYYYMMDD integer)
- `ccMsg.get("svc_kei_no")` - Service contract number
- `temporaryData.get(KK_KAP_SHR_CNT_MAX)` - Maximum simultaneous installment contracts from business parameters
- `temporaryData.get(KK_KAP_WRBK_MAX)` - Maximum premium pack discount units from business parameters
- `temporaryData.get(KK_TAB_TOTAL_CNT_MAX)` - Maximum total tablet count from business parameters
- `ccMsg.get(IN_KK_ICHIRAN_LIST)` - Equipment list from screen display context

## 4. CRUD Operations / Called Services

### Pre-computed evidence from code analysis graph:

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `JBSbatFUCaseFileRnkData.getString` | - | - | Reads string field from case file data |
| R | `JBSbatFUMoveNaviData.getString` | - | - | Reads string field from move navigation data |
| R | `JBSbatZMAdDataSet.getString` | - | - | Reads string field from ZM advertisement data |
| R | `JKKKikiIchiranIkkatsuCC.callSC` | - | - | Core SC invocation helper method |
| R | `JKKKikiIchiranIkkatsuCC.getKikiTkSvcKeiInfo` | EKK0341A010 | - | Retrieves device provision service contract info |
| R | `JKKKikiIchiranIkkatsuCC.getManshonInfo` | EKK0081A010 (mansion) | - | Retrieves mansion (apartment building) information |
| R | `JKKKikiIchiranIkkatsuCC.getNullToStr` | - | - | Null-safe string conversion utility |
| C | `JPCDateUtil.addMonth` | - | - | Date utility: add months to a date string |
| C | `JPCUtilCommon.addMonth` | - | - | Date utility: add months to a date string |
| C | `JCHWebCommon.addMonth` | - | - | Web-common date utility: add months |
| C | `DKSV0157_DKSV0157OPDBMapper.addMonth` | - | - | DB-mapper date utility: add months |
| C | `JKKStringUtil.subStringByte` | - | - | String utility: substring by byte count |
| R | `JESC0101B010TPMA.getString` | - | - | Reads field from ESC service data |
| R | `JESC0101B020TPMA.getString` | - | - | Reads field from ESC service data |
| R | `execECH0761B010` | ECH0761B010 | KK_T_KAP_SAIKEN (installment claim) | Retrieves installment claim list (collateral status) |
| R | `execEKK2331B001_Add` | EKK2331B001 | KK_T_SVC_KEI_SBT_KEN (service contract type) | Retrieves service-type model composition condition list (add mode) |
| R | `execEKK2331B001_LumpSum` | EKK2331B001 | KK_T_SVC_KEI_SBT_KEN (service contract type) | Retrieves service-type model composition condition list (lump sum mode) |
| R | `execEKK2541A010` | EKK2541A010 | KK_T_KAP_KEI (installment contract) | Retrieves installment contract agreement details |
| R | `execEKK2541B002` | EKK2541B002 | KK_T_KAP_KEI, KK_M_KAP_SEIKY (installment billing) | Retrieves installment contract history list |
| R | `callSC(EKK0081A010)` | EKK0081A010 | KK_T_SVC_KEI (service contract), KK_M_PCRS (price plan) | Retrieves service contract agreement info |
| R | `callSC(EKK0351B003)` | EKK0351B003 | KK_T_OP_SVC_KEI (option service contract) | Retrieves option service contract list |
| R | `callSC(EKK0361B001)` | EKK0361B001 | KK_T_OP_SVC_KEI (option service contract) | Retrieves option service contract ISP list |
| R | `callSC(EKK0491A010)` | EKK0491A010 | KK_T_SEIKY_KEI (billing contract), KK_M_SEIKY_WAY (billing payment method) | Retrieves billing agreement inquiry (payment method, forced window, credit card) |
| R | `callSC(EKK0491B507)` | EKK0491B507 | KK_T_SEIKY_KEI (billing contract) | Retrieves billing contract list by service contract number |
| R | `callSC(EKK0491B511)` | EKK0491B511 | KK_T_SEIKY_KEI (billing contract) | Retrieves billing contract list (future reservation acquisition) |
| R | `callSC(EKK0501A010)` | EKK0501A010 | KK_M_SEIKY_WAY_KOZA (billing payment account) | Retrieves credit card agreement inquiry (account status) |
| R | `callSC(EKK0521A010)` | EKK0521A010 | KK_M_CRECARD (credit card master) | Retrieves credit card agreement inquiry (status/expiration month) |
| R | `callSC(EKK0591B001)` | EKK0591B001 | KK_M_PRCRAN (price plan master), KK_M_OP_SVC_CD (option service code) | Retrieves price plan list (option service code) |
| R | `callSC(EKK0811B001)` | EKK0811B001 | KK_M_PCRS (price plan code), KK_M_OP_SVC_CD | Retrieves price code option service list |
| R | `callSC(EKK2521A010)` | EKK2521A010 | KK_M_KAP_PLAN (installment plan master), KK_M_KAP_HAMBAI (installment sales form) | Retrieves installment plan agreement |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | `isMeisaiListCheck` | `isMeisaiListCheck` -> `isKapChk` | `execECH0761B010 [R] KK_T_KAP_SAIKEN`, `execEKK2541B002 [R] KK_T_KAP_KEI`, `execEKK2331B001_Add [R] KK_T_SVC_KEI_SBT_KEN`, `execEKK2331B001_LumpSum [R] KK_T_SVC_KEI_SBT_KEN`, `callSC EKK0081A010 [R] KK_T_SVC_KEI`, `callSC EKK0361B001 [R] KK_T_OP_SVC_KEI`, `callSC EKK0491B507 [R] KK_T_SEIKY_KEI`, `callSC EKK0491A010 [R] KK_T_SEIKY_KEI`, `callSC EKK2541A010 [R] KK_T_KAP_KEI`, `callSC EKK2521A010 [R] KK_M_KAP_PLAN`, `callSC EKK2521A010 [R] KK_M_KAP_HAMBAI`, `getKikiTkSvcKeiInfo [R] KKTK_SVC_KEI`, `getManshonInfo [R] KK_T_SVC_KEI`, `callSC EKK0351B003 [R] KK_T_OP_SVC_KEI`, `callSC EKK0591B001 [R] KK_M_PRCRAN`, `callSC EKK0811B001 [R] KK_M_PCRS`, `callSC EKK0491B511 [R] KK_T_SEIKY_KEI`, `callSC EKK0501A010 [R] KK_M_SEIKY_WAY_KOZA`, `callSC EKK0521A010 [R] KK_M_CRECARD`, `setMessageInfo [W]`, `split [W]`, `getNullToStr [R]`, `getString [R]` |

## 6. Per-Branch Detail Blocks

**Block 1** — [SET] `kapAddKey` (L10686)

> Retrieves the installment eligibility classification from temporaryData.

| # | Type | Code |
|---|------|------|
| 1 | SET | `kapAddKey = temporaryData.get(KAP_ADD_KEY)` |

**Block 2** — [SET] `kapsDelList` (L10689)

> Retrieves the list of devices to be deleted.

| # | Type | Code |
|---|------|------|
| 1 | SET | `kapsDelList = temporaryData.get(KAPS_DEL_LIST)` |

**Block 3** — [IF] Early return for non-registered installment with no deletions [KAP_ADD_CD_NO = "1"] (L10693)

> If the device is non-registered installment (kapAddKey="1") and there are no deletion items, processing is skipped entirely as there is nothing to validate.

| # | Type | Code |
|---|------|------|
| 1 | IF | `KAP_ADD_CD_NO.equals(kapAddKey) && kapsDelList.size() == 0` |
| 2 | RETURN | `return true` |

**Block 4** — [IF] Contract history check for registered or non-registered tablets [KAP_ADD_CD_OK_TABLET = "2", KAP_ADD_CD_NO_TABLET = "1"] (L10711)

> Retrieves installment contract history and validates installment information for both registered ("2") and non-registered ("1") tablet types.

| # | Type | Code |
|---|------|------|
| 1 | IF | `KAP_ADD_CD_OK_TABLET.equals(kapAddKey) OR KAP_ADD_CD_NO_TABLET.equals(kapAddKey)` |
| 2 | EXEC | `ekk2541b002cbsMsg = execEKK2541B002(handle, param, dataMapKey, ccMsg, scCall)` |

**Block 4.1** — [IF-NESTED] Non-registered tablet requires contract data [KAP_ADD_CD_NO_TABLET = "1"] (L10717)

> If non-registered tablet, contract history must exist; otherwise error.

| # | Type | Code |
|---|------|------|
| 1 | IF | `KAP_ADD_CD_NO_TABLET.equals(kapAddKey)` |
| 2 | IF-NESTED | `ekk2541b002cbsMsg == null OR length == 0` |
| 3 | EXEC-NESTED | `setMessageInfo(ccMsg, "EKBB710-KW", "", "", ERR_FLG_ERR)` |
| 4 | RETURN-NESTED | `return false` |

**Block 4.2** — [FOR] Loop contract history records (L10723)

> For each installment contract record, validate installment info using two check methods.

| # | Type | Code |
|---|------|------|
| 1 | FOR | `for ekk2541b002Msg : ekk2541b002cbsMsg` |
| 2 | IF | `!isCheckKappuInfo1(ekk2541b002Msg) AND !isCheckKappuInfo2(ekk2541b002Msg, kapAddKey)` |
| 3 | EXEC | `setMessageInfo(ccMsg, "EKBB710-KW", "", "", ERR_FLG_ERR)` |
| 4 | RETURN | `return false` |

**Block 5** — [IF] func_code check for update/add mode [FUNC_CODE_2 = "2"] (L10787)

> When on an update/add screen, perform additional device-specific checks: model code cross-reference, temporary payment warnings, deletion checks.

| # | Type | Code |
|---|------|------|
| 1 | IF | `FUNC_CODE_2.equals(ccMsg.get("func_code"))` |

**Block 5.1** — [IF] Registered installment - model code cross-reference [KAP_ADD_CD_OK_TABLET = "2"] (L10792)

> Retrieves service-type model composition conditions and verifies that model codes found in the system exist in the cradle-attached device list. Displays a warning for any model code not found.

| # | Type | Code |
|---|------|------|
| 1 | IF | `KAP_ADD_CD_OK_TABLET.equals(kapAddKey)` |
| 2 | SET | `kapsCradleList = temporaryData.get(KAPS_CRADLE_LIST)` |
| 3 | SET | `ekk2331b001AddcbsMsg = execEKK2331B001_Add(handle, ...)` |
| 4 | FOR | `for ekk2331b001AddMsg : ekk2331b001AddcbsMsg` |
| 5 | FOR | `for j = 2 to 10` |
| 6 | SET | `taknkikiModelCd = getNullToStr(ekk2331b001AddMsg.getString("taknkiki_model_cd_" + j))` |
| 7 | IF | `!taknkikiModelCd.isEmpty()` |
| 8 | IF | `!kapsCradleList.contains(taknkikiModelCd)` |
| 9 | EXEC | `setMessageInfo(ccMsg, "EKBB730--Q", "", "", ERR_FLG_WARNING)` |

**Block 5.2** — [IF] Non-registered tablet - temporary payment warning [KAP_ADD_CD_NO_TABLET = "1"] (L10802)

> Displays a warning for non-registered installment devices when on update mode.

| # | Type | Code |
|---|------|------|
| 1 | IF | `KAP_ADD_CD_NO_TABLET.equals(kapAddKey)` |
| 2 | EXEC | `setMessageInfo(ccMsg, "EKBB740-KW", "", "", ERR_FLG_WARNING)` |

**Block 5.3** — [IF] Credit-only device - lump sum model code check [KAP_ADD_CD_NO_CRADLE = "0"] (L10808)

> For credit-only (cradle) devices, retrieves service-type model composition conditions and cross-references model codes (1-10) against the cradle list.

| # | Type | Code |
|---|------|------|
| 1 | IF | `KAP_ADD_CD_NO_CRADLE.equals(kapAddKey)` |
| 2 | SET | `kapsCradleList = temporaryData.get(KAPS_CRADLE_LIST)` |
| 3 | SET | `ekk2331b001LumpSumcbsMsg = execEKK2331B001_LumpSum(handle, ...)` |
| 4 | FOR | `for ekk2331b001LumpSumMsg : ekk2331b001LumpSumcbsMsg` |
| 5 | FOR | `for j = 1 to 10` |
| 6 | SET | `taknkikiModelCd = getNullToStr(ekk2331b001LumpSumMsg.getString("taknkiki_model_cd_" + j))` |
| 7 | IF | `!taknkikiModelCd.isEmpty()` |
| 8 | IF | `!kapsCradleList.contains(taknkikiModelCd)` |
| 9 | EXEC | `setMessageInfo(ccMsg, "EKBB740-KW", "", "", ERR_FLG_WARNING)` |

**Block 5.4** — [IF] Deletion check (L10833)

> If there are devices in the deletion list, display a warning.

| # | Type | Code |
|---|------|------|
| 1 | IF | `kapsDelList.size() > 0` |
| 2 | EXEC | `setMessageInfo(ccMsg, "EKBB750--I", "", "", ERR_FLG_WARNING)` |

**Block 6** — [IF] Payment-related checks for all installment types [KAP_ADD_CD_OK_TABLET = "2", KAP_ADD_CD_NO_TABLET = "1", KAP_ADD_CD_NO_CRADLE = "0"] (L10839)

> The broadest conditional block. Retrieves service/price plan data, iterates device list to count active tablets, handles mansion-type payment logic, checks payment method validity, and validates simultaneous installment contract counts.

| # | Type | Code |
|---|------|------|
| 1 | IF | `kapAddKey equals 2 OR 1 OR 0` |
| 2 | SET | `kkiIchiranList = ccMsg.get(IN_KK_ICHIRAN_LIST)` |
| 3 | SET | `ekk0081a010out = temporaryData.get(TEMPLATE_ID_EKK0081A010)` |
| 4 | SET | `pcrs_cd_svc = ekk0081a010out.getString(EKK0081A010CBSMsg1List.PCRS_CD)` |
| 5 | SET | `ekk0591b001IN = {TEMPLATE_ID_EKK0591B001, FUNC_CODE_1, OP_SVC_CD_B077}` |
| 6 | SET | `ekk0591b001OUT = callSC(handle, scCall, param, dataMapKey, ekk0591b001IN)` |
| 7 | SET | `pcrs_cd = ekk0591b001OUT.getString(EKK0591B001CBSMsg1List.PCRS_CD)` |
| 8 | SET | `ekk0811b001IN = {TEMPLATE_ID_EKK0811B001, "1", pcrs_cd_svc}` |
| 9 | SET | `ekk0811a010CBSMsg1list = callSC(handle, scCall, param, dataMapKey, ekk0811b001IN)` |
| 10 | SET | `ekk0361b001IN = {TEMPLATE_ID_EKK0361B001, FUNC_CODE_1, svc_kei_no}` |
| 11 | SET | `ekk0361b001CBSMsg1list = callSC(handle, scCall, param, dataMapKey, ekk0361b001IN)` |
| 12 | SET | `prcGgrpCd = ekk0081a010out.getString(EKK0081A010CBSMsg1List.PRC_GRP_CD)` |
| 13 | SET | `unyo = Integer.parseInt(ccMsg.get("unyo_ymd"))` |
| 14 | SET | `svChrgStadate = MAX_DATE` |

**Block 6.1** — [IF] func_code == "2" - tablet counting loop (L11045)

> Counts active tablets based on device type and contract status.

| # | Type | Code |
|---|------|------|
| 1 | IF | `FUNC_CODE_2.equals(ccMsg.get("func_code"))` |
| 2 | SET | `tabletCnt = 0` |
| 3 | SET | `craedolCnt = 0` |
| 4 | FOR | `for i = 0 to kkiIchiranList.size()` |
| 5 | SET | `workIchiranMap = kkiIchiranList.get(i)` |
| 6 | SET | `kktkSvcKeiNo = getNullToStr(workIchiranMap.get("kktk_svc_kei_no_bf"))` |
| 7 | SET | `kikiEditKbn = workIchiranMap.get("kiki_edit_kbn")` |
| 8 | SET | `taknkikiSbtCd = workIchiranMap.get("taknkiki_sbt_cd_bf")` |
| 9 | IF | `TAKNKIKI_SBT_CD_TABLET.equals(taknkikiSbtCd) AND (kikiEditKbn is empty OR "1" OR "2")` |
| 10 | IF | `kktkSvcKeiNo is empty` |
| 11 | SET | `tabletCnt++` |
| 12 | ELSE | `ekk0341a010cbsMsg = getKikiTkSvcKeiInfo(handle, ...)` |
| 13 | SET | `kktkSvcKeiStat = ekk0341a010cbsMsg.getString(KKTK_SVC_KEI_STAT)` |
| 14 | IF | `!kktkSvcKeiStat equals KAIYAKU AND !equals CANCEL` |
| 15 | SET | `tabletCnt++` |
| 16 | ELSE-IF | `TAKNKIKI_SBT_CD_TABLET_CRADLE.equals(taknkikiSbtCd)` (same pattern for cradle devices) |
| 17 | SET | `craedolCnt++` (or fetch status and check not cancelled) |

**Block 6.2** — [IF] Mansion payment type handling [PAY_MANS_TYPE = "16"] (L11118)

> If payment group is mansion type, retrieves mansion info and finds the earliest service charge start date across all option service contracts.

| # | Type | Code |
|---|------|------|
| 1 | IF | `PAY_MANS_TYPE.equals(prcGgrpCd)` |
| 2 | IF | `mansInfo == null OR empty` |
| 3 | SET | `svChrgStaymd = ""` |
| 4 | ELSE | IF `PAY_ZENKO_IKKATSU.equals(mansInfo.get(PAY_HOSHIKI_CD))` |
| 5 | SET | `ekk0351b003IN = {TEMPLATE_ID_EKK0351B003, FUNC_CODE_1, svc_kei_no}` |
| 6 | SET | `ekk0351b003CBSMsg1list = callSC(...)` |
| 7 | FOR | `for each ekk0351b003Child` |
| 8 | IF | `pcrs_cd matches AND OP_SVC_CD_B077 matches AND not cancelled` |
| 9 | SET | `wkChrgStaymd = getString(SVC_CHRG_STAYMD)` |
| 10 | SET | `wkChrgEndymd = getString(SVC_CHRG_ENDYMD)` |
| 11 | IF | `wkChrgStaymd empty OR staymd > endymd` -> `continue` |
| 12 | SET | `minSvChrgStaymd = min(minSvChrgStaymd, wkChrgStaymd)` |
| 13 | SET | `svChrgStaymd = minSvChrgStaymd` |
| 14 | ELSE | `svChrgStaymd = ekk0081a010out.getString(SVC_CHRG_STAYMD)` |
| 15 | ELSE | `svChrgStaymd = ekk0081a010out.getString(SVC_CHRG_STAYMD)` |

**Block 6.3** — [IF] Normalize service charge start date (L11202)

> Extracts the day portion, sets to the 1st of the month, and adds 2 months.

| # | Type | Code |
|---|------|------|
| 1 | IF | `!svChrgStaymd.isEmpty()` |
| 2 | SET | `svChrgStaymd = JPCUtilCommon.addMonth(subStringByte(svChrgStaymd, 6) + "01", 2)` |
| 3 | SET | `svChrgStadate = Integer.parseInt(svChrgStaymd)` |

**Block 6.4** — [IF] Tablet count warning - same month restriction [KAP_ADD_CD_OK_TABLET = "2", KAP_ADD_CD_NO_TABLET = "1"] (L11213)

> If more than 1 tablet exists and the operation date is before the normalized service charge start date, display a warning.

| # | Type | Code |
|---|------|------|
| 1 | IF | `(KAP_ADD_CD_OK_TABLET.equals(kapAddKey) OR KAP_ADD_CD_NO_TABLET.equals(kapAddKey))` |
| 2 | IF | `tabletCnt > 1 AND unyo < svChrgStadate` |
| 3 | EXEC | `setMessageInfo(ccMsg, "EKBE111--Q", "", "", ERR_FLG_WARNING)` |

**Block 6.5** — [IF] Multi-device review + underconstruction check (L11221)

> When 2+ tablets or cradles exist and operation is before the charge start date, verify review status and construction flag.

| # | Type | Code |
|---|------|------|
| 1 | IF | `(craedolCnt > 1 OR tabletCnt > 1) AND unyo < svChrgStadate` |
| 2 | SET | `errFlg = false` |
| 3 | SET | `svcKeiStat = ekk0081a010out.getString(SVC_KEI_STAT)` |
| 4 | SET | `shosaYmd = getNullToStr(ekk0081a010out.getString(SHOSA_YMD))` |
| 5 | SET | `shosaDate = (empty) ? MAX_DATE : Integer.parseInt(shosaYmd)` |
| 6 | IF | `tabletCnt > 1` |
| 7 | IF | `SVC_KEI_STAT_UKEZUMI.equals(svcKeiStat) OR (SVC_KEI_STAT_SHOSAZUMI.equals(svcKeiStat) AND unyo <= shosaDate)` |
| 8 | EXEC | `setMessageInfo(ccMsg, "EKBE140-KW", "", "", ERR_FLG_ERR)` |
| 9 | SET | `errFlg = true` |
| 10 | IF | `!isUnderConstruction3(handle, ...)` |
| 11 | EXEC | `setMessageInfo(ccMsg, "EKBE140-KW", "", "", ERR_FLG_ERR)` |
| 12 | SET | `errFlg = true` |
| 13 | IF | `craedolCnt > 1` (same pattern) |
| 14 | EXEC | `setMessageInfo(ccMsg, "EKBE154-KW", "", "", ERR_FLG_ERR)` |
| 15 | SET | `errFlg = true` |
| 16 | IF | `errFlg == true` |
| 17 | RETURN | `return false` |

**Block 6.6** — [IF] Payment method validation check (L11280)

> When single tablet with same-month or multiple tablets, validates payment method by querying billing contracts, verifying payment method type, and calling `isCheckSeikyWay` to validate bank account and credit card status.

| # | Type | Code |
|---|------|------|
| 1 | IF | `KAP_ADD_CD_OK_TABLET.equals(kapAddKey) OR KAP_ADD_CD_NO_TABLET.equals(kapAddKey)` |
| 2 | IF | `(tabletCnt == 1 AND unyo >= svChrgStadate) OR tabletCnt > 1` |
| 3 | SET | `ekk0081a010cbsMsg = temporaryData.get(TEMPLATE_ID_EKK0081A010)` |
| 4 | SET | `ekk0491b507IN = {TEMPLATE_ID_EKK0491B507, FUNC_CODE_1, SVC_KEI_NO}` |
| 5 | SET | `ekk0491b507cbsMsg1List = callSC(...)` |
| 6 | IF | `ekk0491b507cbsMsg1List empty` |
| 7 | RETURN | `return false` |
| 8 | SET | `key_seiky_key_no = ekk0491b507cbsMsg1List[0].getString(SEIKY_KEI_NO)` |
| 9 | SET | `ekk0491a010IN = {TEMPLATE_ID_EKK0491A010, FUNC_CODE_2, key_seiky_key_no, unyo_ymd}` |
| 10 | SET | `ekk0491a010OUT = callSC(...)` |
| 11 | SET | `seikyWayCd = getString(SEIKY_WAY_CD)` |
| 12 | SET | `seikyWayNoKoza = getString(SEIKY_WAY_NO_KOZA)` |
| 13 | SET | `crecardNo = getString(SEIKY_WAY_NO_CRECARD)` |
| 14 | IF | `!isCheckSeikyWay(handle, param, dataMapKey, ccMsg, scCall, seikyWayCd, seikyWayNoKoza, crecardNo)` |
| 15 | SET | `ekk0491b511IN = {TEMPLATE_ID_EKK0491B511, FUNC_CODE_1, SVC_KEI_NO}` |
| 16 | SET | `ekk0491b511cbsMsg1List = callSC(...)` |
| 17 | IF | `empty` -> `setMessageInfo EKBE112--Q WARNING` |
| 18 | ELSE | Loop checking for payment method changes and calling `isCheckSeikyWay` on each |

**Block 7** — [IF] Smart Link premium check for registered installment [KAP_ADD_CD_OK_TABLET = "2"] (L11433)

> Iterates the equipment list, identifies Smart Link premium contracts, and validates that current option service contract count does not exceed the maximum.

| # | Type | Code |
|---|------|------|
| 1 | IF | `KAP_ADD_CD_OK_TABLET.equals(kapAddKey)` |
| 2 | SET | `kapCnt = 0`, `ppWariCnt = 0` |
| 3 | FOR | `for i = 0 to kkiIchiranList.size()` |
| 4 | SET | `kapTaisyoCdIchiran = getNullToStr(workIchiranMap.get("kap_taisyo_cd"))` |
| 5 | SET | `kapKeiNo = getNullToStr(workIchiranMap.get("kap_kei_no"))` |
| 6 | SET | `kktkSvcKeiNo = getNullToStr(workIchiranMap.get("kktk_svc_kei_no_bf"))` |
| 7 | SET | `kikiEditKbn = workIchiranMap.get("kiki_edit_kbn")` |
| 8 | SET | `taknkikiSbtCd = workIchiranMap.get("taknkiki_sbt_cd_bf")` |
| 9 | IF | `TAKNKIKI_SBT_CD_TABLET.equals(taknkikiSbtCd) AND (kikiEditKbn is empty OR "1" OR "2")` |
| 10 | IF | `kapKeiNo is empty` |
| 11 | SET | `kapPayZanCnt = getNullToStr(workIchiranMap.get("kap_pay_zan_cnt_edit"))` |
| 12 | IF | `KAP_TAISYO_CD_KEIZUMI.equals(kapTaisyoCdIchiran)` -> `ppWariCnt++` |
| 13 | IF | `zanCnt > 0` -> `kapCnt++` |
| 14 | ELSE | `ekk2541A010cbsMsg = execEKK2541A010(handle, ...)` |
| 15 | SET | `kapPlanCd = getString(KAP_PLAN_CD)` |
| 16 | SET | `kapIktSikySwchYm = getString(KAP_IKT_SIKY_SWCH_YM)` |
| 17 | SET | `kapPayZanCnt = getString(KAP_PAY_ZAN_CNT)` |
| 18 | SET | `ekk2521a010IN = {TEMPLATE_ID_EKK2521A010, FUNC_CODE_2, kapPlanCd, unyo_ymd}` |
| 19 | SET | `ekk2521a010CBSMsg1list = callSC(...)` |
| 20 | IF | `KAP_TAISYO_CD_KEIZUMI.equals(kapTaisyoCdIchiran)` |
| 21 | IF | `!KAP_KEI_STAT_KAIYAKU AND !KAP_KEI_STAT_CANCEL` |
| 22 | SET | `ppWariCnt++` |
| 23 | IF | `!KAP_DIV_01.equals(hambaiFormCd) AND kapIktSikySwchYm empty AND zanCnt > 0` |
| 24 | SET | `kapCnt++` |
| 25 | SET | `kapShrCntMaxArray = temporaryData.get(KK_KAP_SHR_CNT_MAX).split(",")` |
| 26 | SET | `kapShrCntMax = Integer.parseInt(kapShrCntMaxArray.get(0))` |
| 27 | IF | `kapCnt > kapShrCntMax` |
| 28 | EXEC | `setMessageInfo(ccMsg, "EKBE113--Q", "", "", ERR_FLG_WARNING)` |
| 29 | SET | `ppWariCntArray = temporaryData.get(KK_KAP_WRBK_MAX).split(",")` |
| 30 | SET | `ppWariCntMax = Integer.parseInt(ppWariCntArray.get(0))` |
| 31 | IF | `ppWariCnt > ppWariCntMax` |
| 32 | EXEC | `setMessageInfo(ccMsg, "EKBE115--Q", "", "", ERR_FLG_WARNING)` |

**Block 7.1** — [IF-NESTED] Smart Link premium contract count validation (L11502)

> For each device in the list that has Smart Link premium, checks if the current option service contract count exceeds the maximum allowed.

| # | Type | Code |
|---|------|------|
| 1 | IF | `!("1".equals(workIchiranMap.get("smartrink_premium_um_edit")))` |
| 2 | EXEC | `continue` (skip non-Smart Link premium devices) |
| 3 | SET | `max_op_svc_cnt = 0`, `now_op_svc_cnt = 0` |
| 4 | FOR | `for j = 0 to ekk0811a010CBSMsg1list.length` |
| 5 | IF | `OP_SVC_CD_B077.equals(ekk0811a010Child.getString(OP_SVC_CD))` |
| 6 | SET | `max_op_svc_cnt = ekk0811a010Child.getString(MAX_OP_SVC_CNT)` |
| 7 | FOR | `for k = 0 to ekk0361b001CBSMsg1list.length` |
| 8 | IF | `pcrs_cd matches AND OP_SVC_CD_B077 matches AND status not cancelled AND not kaiyaku` |
| 9 | SET | `now_op_svc_cnt++` |
| 10 | IF | `now_op_svc_cnt >= max_op_svc_cnt` |
| 11 | EXEC | `setMessageInfo(ccMsg, "EKBB650-KW", "", "", ERR_FLG_ERR)` |
| 12 | RETURN | `return false` |

**Block 8** — [IF] Total tablet count check (L11560)

> When func_code is "2", counts all active tablets across all device types and enforces the business parameter maximum.

| # | Type | Code |
|---|------|------|
| 1 | IF | `FUNC_CODE_2.equals(ccMsg.get("func_code"))` |
| 2 | SET | `kkiIchiranList = ccMsg.get(IN_KK_ICHIRAN_LIST)` |
| 3 | SET | `tabletCnt = 0` |
| 4 | FOR | `for i = 0 to kkiIchiranList.size()` |
| 5 | SET | `kktkSvcKeiNo = getNullToStr(workIchiranMap.get("kktk_svc_kei_no_bf"))` |
| 6 | SET | `kikiEditKbn = workIchiranMap.get("kiki_edit_kbn")` |
| 7 | SET | `taknkikiSbtCd = workIchiranMap.get("taknkiki_sbt_cd_bf")` |
| 8 | IF | `TAKNKIKI_SBT_CD_TABLET.equals(taknkikiSbtCd) AND (kikiEditKbn empty OR "1" OR "2")` |
| 9 | IF | `kktkSvcKeiNo empty` -> `tabletCnt++` |
| 10 | ELSE | `ekk0341a010cbsMsg = getKikiTkSvcKeiInfo(handle, ...)` |
| 11 | SET | `kktkSvcKeiStat = ekk0341a010cbsMsg.getString(KKTK_SVC_KEI_STAT)` |
| 12 | IF | `!kktkSvcKeiStat equals KAIYAKU AND !equals CANCEL` -> `tabletCnt++` |
| 13 | SET | `tabTotaCntMaxArray = temporaryData.get(KK_TAB_TOTAL_CNT_MAX).split(",")` |
| 14 | SET | `tabTotaCntMax = Integer.parseInt(tabTotaCntMaxArray.get(0))` |
| 15 | IF | `tabletCnt > tabTotaCntMax` |
| 16 | EXEC | `setMessageInfo(ccMsg, "EKBE114--Q", "", "", ERR_FLG_WARNING)` |
| 17 | RETURN | `return true` |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `kapAddKey` | Field | Installment eligibility classification - determines which validation path to take: "2"=registered, "1"=non-registered, "0"=credit-only |
| `kapAddkey` | Field | Key identifier in temporaryData map for storing installment eligibility |
| `kapsDelList` | Field | List of device IDs scheduled for deletion from the service contract |
| `kapsCradleList` | Field | List of device model codes associated with cradle (docking station) devices |
| `kapAddCdOkTablet` | Field | Installment classification code "2" - registered installment device with full contract history |
| `kapAddCdNoTablet` | Field | Installment classification code "1" - non-registered installment device (no installment registration) |
| `kapAddCdNoCradle` | Field | Installment classification code "0" - credit-only device (payment by credit without cradle registration) |
| `kap_sei` / `kapu` | Japanese | 割賦 - Installment plan / Installment contract; device purchased via monthly installment payments |
| `func_code` | Field | Function mode code: "1"=view mode, "2"=add/update mode |
| `unyo_ymd` | Field | Operation date as YYYYMMDD integer (e.g., 20240115) |
| `svc_kei_no` | Field | Service contract number - unique identifier for a service contract line |
| `pcrs_cd` | Field | Price code - identifies the customer's current price plan |
| `pcrs_cd_svc` | Field | Service-level price code extracted from the service contract agreement |
| `prc_grp_cd` / `prcGgrpCd` | Field | Payment group code - classifies payment type; "16" indicates mansion-type payment |
| `TAKNKIKI_SBT_CD_TABLET` | Field | Home device sub-type code identifying a tablet device |
| `TAKNKIKI_SBT_CD_TABLET_CRADLE` | Field | Home device sub-type code identifying a tablet cradle device |
| `kktk_svc_kei_no_bf` | Field | Device provision service contract number (before state) - used in equipment list |
| `kiki_edit_kbn` | Field | Device edit category - indicates editing status: empty/new = "1" or "2" |
| `kap_pay_zan_cnt_edit` | Field | Remaining installment payment count in edit context |
| `kap_kei_stat` | Field | Installment contract status (active, cancelled, etc.) |
| `kap_taisyo_cd` | Field | Installment eligibility classification code for list display |
| `svChrgStaymd` | Field | Service charge start date (YYYYMMDD) - used for same-month restriction validation |
| `svChrgStadate` | Field | Normalized service charge start date with +2 months applied, as integer YYYYMMDD |
| `tabletCnt` | Variable | Count of active tablets for current validation scope |
| `craedolCnt` | Variable | Count of active cradle devices for current validation scope |
| `kapCnt` | Variable | Simultaneous installment contract count - number of active installment contracts |
| `ppWariCnt` | Variable | Premium pack discount applicable tablet count |
| `max_op_svc_cnt` | Variable | Maximum allowed option service contracts from price plan master |
| `now_op_svc_cnt` | Variable | Current option service contract count for the given price code and service code |
| `smart_rink_premium` | Japanese | スマートリンクプレミアム - Smart Link Premium, a value-added service bundle |
| `seiky_way_cd` | Field | Payment method code - indicates how billing is collected |
| `seiky_way_no_koza` | Field | Payment method account number (bank account for auto-debit) |
| `crecardNo` | Field | Credit card number for credit card payment |
| `koza_stat` | Field | Bank account status (valid, invalid, cancelled, under review) |
| `crecard_stat` | Field | Credit card status (valid, invalid, expired, cancelled) |
| `PAYWAY_CREDIT` | Field | Payment method code for credit card payment |
| `PAYWAY_MADOGUCHI` | Field | Payment method code for counter (manual/over-the-counter) payment |
| `PAYWAY_KOZAFURIKAE` | Field | Payment method code for bank account transfer substitution |
| `PAYWAY_YUBIN` | Field | Payment method code for postal automatic debit |
| `CREDIT_STAT_NG` | Field | Credit card invalid/exited status code |
| `CREDIT_STAT_YK` | Field | Credit card valid status code |
| `KOZA_STAT_NG` | Field | Bank account invalid/exited status code |
| `KOZA_STAT_CANCEL` | Field | Bank account cancelled status code |
| `KOZA_STAT_TOROKUZUMI` | Field | Bank account registered status code |
| `KOZA_STAT_SHINSAIRAI` | Field | Bank account under review (submitted) status code |
| `KOZA_STAT_SHINSAZUMI` | Field | Bank account review completed status code |
| `ERR_FLG_ERR` | Field | Error flag value "E" - indicates a blocking error condition |
| `ERR_FLG_WARNING` | Field | Warning flag value "W" - indicates a non-blocking warning |
| `KKTK_SVC_KEI_STAT_KAIYAKU` | Field | Device service contract status "910" - cancelled |
| `KKTK_SVC_KEI_STAT_CANCEL` | Field | Device service contract status "920" - cancellation completed |
| `SVC_KEI_STAT_UKEZUMI` | Field | Service contract status "010" - reception completed |
| `SVC_KEI_STAT_SHOSAZUMI` | Field | Service contract status "020" - review completed |
| `SHOSA_YMD` | Field | Review date (YYYYMMDD) - used for review completion check |
| `MAX_DATE` | Field | Maximum date constant (99991231) used as sentinel for empty dates |
| `OP_SVC_CD_B077` | Field | Option service code "B077" - typically refers to internet service |
| `OP_SVC_KEI_STAT_CANCEL` | Field | Option service contract cancelled status |
| `TEMPLATE_ID_EKK0081A010` | Field | Service contract agreement inquiry template ID |
| `TEMPLATE_ID_EKK0361B001` | Field | Option service contract ISP list template ID |
| `TEMPLATE_ID_EKK0591B001` | Field | Price plan list (option service code) template ID |
| `TEMPLATE_ID_EKK0811B001` | Field | Price code option service list template ID |
| `TEMPLATE_ID_EKK2541A010` | Field | Installment contract agreement inquiry template ID |
| `TEMPLATE_ID_EKK2541B002` | Field | Installment contract history list template ID |
| `TEMPLATE_ID_EKK2521A010` | Field | Installment plan agreement template ID |
| `TEMPLATE_ID_EKK0491B507` | Field | Billing contract list by service contract number template ID |
| `TEMPLATE_ID_EKK0491A010` | Field | Billing agreement inquiry (payment method/credit card) template ID |
| `TEMPLATE_ID_EKK0491B511` | Field | Billing contract list (future reservation) template ID |
| `TEMPLATE_ID_EKK0501A010` | Field | Credit card account status inquiry template ID |
| `TEMPLATE_ID_EKK0521A010` | Field | Credit card status/expiration inquiry template ID |
| `TEMPLATE_ID_EKK0351B003` | Field | Option service contract list (all-unified payment) template ID |
| `KK_KAP_SHR_CNT_MAX` | Field | Business parameter key - maximum simultaneous installment contracts |
| `KK_KAP_WRBK_MAX` | Field | Business parameter key - maximum premium pack discount units |
| `KK_TAB_TOTAL_CNT_MAX` | Field | Business parameter key - maximum total tablet count |
| `IN_KK_ICHIRAN_LIST` | Field | Key in ccMsg for the equipment list displayed on screen |
| EKK0081A010 | SC Code | Service contract agreement inquiry - retrieves service contract details |
| EKK0341A010 | SC Code | Device provision service contract info inquiry - retrieves device contract status |
| EKK0351B003 | SC Code | Option service contract list (all-unified payment) - for mansion payment validation |
| EKK0361B001 | SC Code | Option service contract ISP list - retrieves option service contracts |
| EKK0491A010 | SC Code | Billing agreement inquiry - retrieves payment method, account number, credit card info |
| EKK0491B507 | SC Code | Billing contract list (service contract number) - retrieves billing contract numbers |
| EKK0491B511 | SC Code | Billing contract list (future reservation acquisition) - retrieves future billing contracts |
| EKK0501A010 | SC Code | Credit card account status inquiry - validates bank account status |
| EKK0521A010 | SC Code | Credit card status/expiration inquiry - validates credit card validity |
| EKK0591B001 | SC Code | Price plan list (option service code) - retrieves max option service count |
| EKK0811B001 | SC Code | Price code option service list - retrieves price code to option service mapping |
| EKK2331B001 | SC Code | Service type model composition condition list - retrieves device model codes |
| EKK2521A010 | SC Code | Installment plan agreement - retrieves installment plan details including sales form |
| EKK2541A010 | SC Code | Installment contract agreement - retrieves installment contract details |
| EKK2541B002 | SC Code | Installment contract history list - retrieves installment contract records |
| ECH0761B010 | CBS Code | Installment claim list - retrieves installment claim/collateral records |
| KK_T_SVC_KEI | Table | Service contract master table |
| KK_T_OP_SVC_KEI | Table | Option service contract table |
| KK_T_KAP_KEI | Table | Installment contract table |
| KK_T_SEIKY_KEI | Table | Billing contract table |
| KK_T_KAP_SAIKEN | Table | Installment claim/collateral table |
| KK_T_SVC_KEI_SBT_KEN | Table | Service contract type condition table |
| KK_M_PCRS | Table | Price plan code master table |
| KK_M_PRCRAN | Table | Price plan master table |
| KK_M_OP_SVC_CD | Table | Option service code master table |
| KK_M_SEIKY_WAY | Table | Billing payment method master table |
| KK_M_SEIKY_WAY_KOZA | Table | Billing payment account master table |
| KK_M_CRECARD | Table | Credit card master table |
| KK_M_KAP_PLAN | Table | Installment plan master table |
| KK_M_KAP_HAMBAI | Table | Installment sales form master table |
| KK_M_KAP_SEIKY | Table | Installment billing master table |