# Business Logic — JKKCancelSvcKeiCC.updateTbltKei() [354 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `com.fujitsu.futurity.bp.custom.common.JKKCancelSvcKeiCC` |
| Layer | CC / Common Component (Service-level business logic coordinator) |
| Module | `common` (Package: `com.fujitsu.futurity.bp.custom.common`) |

## 1. Role

### JKKCancelSvcKeiCC.updateTbltKei()

This method implements the tablet contract status check (タブレット契約の状態チェック) for FTTH hybrid service cancellations. Specifically, it validates whether tablet or tablet cradle device delivery registrations need to be updated when a customer's internet service contract is being modified or canceled. The method handles the 3G+21M hybrid plan (3G+21M光ハイブリッド) where both fiber-optic internet and mobile services are bundled, requiring coordinated device delivery management.

The method follows a **gate-and-route pattern**: it progressively filters eligibility through a series of early-return guards checking for net contract existence, hybrid plan presence, tablet/cradle device contracts, construction project status, delivery information, building type, and service state. If all gates pass, it dispatches to one of two processing blocks based on the construction project status (kojiakStat): either Block N-1 (indoor survey completed) which sets delivery status to NULL and registers the tablet/cradle as newly created home equipment, or Block N-2 (construction company decision completed) which sets delivery status to "service start target" (SVC_STA_JI_HIS_JOKYO_SKCD_1).

The method acts as a **shared utility** called during service inquiry processing (JKKSvkeiShosaClCC) when handling hybrid plan changes. It ensures that device delivery records remain consistent with the current service state, updating or deregistering tablet and cradle device deliveries as appropriate through the construction project (koji anken) registration flow.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["updateTbltKei start"])
    CALL491["callEKK0491B005SC - Request contract inquiry"]
    FIND_NET["Find matching seikyKeiNo by svcKeiNo"]

    START --> CALL491 --> FIND_NET

    CHECK_NET["Check: Is net contract found? (isNull svcKeiNoNet)"]
    CHECK_HYBRID["Check: anotherHybridFlg (3G21M_HYBRID=A60)"]

    FIND_NET --> CHECK_NET
    FIND_NET --> CHECK_HYBRID

    EARLY_RETURN1["return - no net contract OR another hybrid exists"]

    CHECK_NET --> |true| EARLY_RETURN1
    CHECK_HYBRID --> |true| EARLY_RETURN1

    CALL0341B["callEKK0341B002SC - Tablet contract inquiry"]

    EARLY_RETURN1 --> END_FAIL
    CHECK_NET --> |false| CALL0341B
    CHECK_HYBRID --> |false| CALL0341B

    CALL0341B --> LOOP_TABLET["Loop tablet contract list for kktkSvcCd"]

    LOOP_TABLET --> CHECK_TABLET["KKTK_SVC_CD_TABLET = C021"]
    LOOP_TABLET --> CHECK_CRADLE["KKTK_SVC_CD_CRADLE = C022"]

    CHECK_TABLET --> |true| SET_TBLT["kktkSvcKeiNoTblt = result tbltFlg = true"]
    CHECK_TABLET --> |false| CHECK_CRADLE
    SET_TBLT --> NEXT_TABLET["next in list"]

    CHECK_CRADLE --> |true| SET_CRDL["kktkSvcKeiNoCrdl = result crdlFlg = true"]
    CHECK_CRADLE --> |false| NEXT_TABLET
    SET_CRDL --> NEXT_TABLET
    NEXT_TABLET --> END_TABLET_LOOP["End loop"]

    END_TABLET_LOOP --> CHECK_NO_DEVICE["Check: !tbltFlg AND !crdlFlg"]

    CHECK_NO_DEVICE --> |true| EARLY_RETURN2["return - no device contracts"]
    CHECK_NO_DEVICE --> |false| CALL_U0011

    EARLY_RETURN2 --> END_FAIL
    CHECK_NO_DEVICE --> |false| CALL_U0011

    CALL_U0011["callEKU0011B010SC - Construction project list"]

    CALL_U0011 --> LOOP_U0011["Loop construction project list"]

    LOOP_U0011 --> CALL_A010["callEKU0011A010SC - Construction agreement"]

    CALL_A010 --> EXTRACT_STAT["Extract kojiakStat, kojiakSbtCd, kojiukOptIdoDiv"]

    EXTRACT_STAT --> CHECK_NEWESTA["CD00577_NEWESTA = 001 (New construction)"]

    CHECK_NEWESTA --> |false| NEXT_U0011["next in list"]

    CHECK_NEWESTA --> |true| CHECK_DIV1["KOJI_UK_OPTNTY_IDO_DIV_NEW = 00001 (New contract)"]
    CHECK_NEWESTA --> |true| CHECK_DIV2["KOJI_UK_OPTNTY_IDO_DIV_ADD = 00002 (Service add)"]

    CHECK_DIV1 --> |true| SET_NETKOJIAK["netKojiak = listMsg break"]
    CHECK_DIV1 --> |false| CHECK_DIV2
    CHECK_DIV2 --> |true| SET_NETKOJIAK
    CHECK_DIV2 --> |false| NEXT_U0011
    SET_NETKOJIAK --> NEXT_U0011
    NEXT_U0011 --> END_U0011_LOOP["End loop"]

    END_U0011_LOOP --> CHECK_NETKOJIAK["Check: netKojiak == null"]

    CHECK_NETKOJIAK --> |true| EARLY_RETURN3["return - no net construction"]
    CHECK_NETKOJIAK --> |false| CALL_HAISO

    EARLY_RETURN3 --> END_FAIL
    CHECK_NETKOJIAK --> |false| CALL_HAISO

    CALL_HAISO["searchHaisoInfo - Delivery info inquiry"]

    CALL_HAISO --> LOOP_HAISO["Loop delivery info list"]

    LOOP_HAISO --> MATCH_TBLT["Match haiso to kktkSvcKeiNoTblt"]
    LOOP_HAISO --> MATCH_CRDL["Match haiso to kktkSvcKeiNoCrdl"]

    MATCH_TBLT --> CHECK_STAT_TBLT["HAISO_STAT_UK_ZM or HAISO_STAT_CHUSI"]
    MATCH_CRDL --> CHECK_CRDL_EXISTS["kktkSvcKeiNoCrdl not empty"]

    CHECK_STAT_TBLT --> |true| SET_HAISO_TBLT["haisoNoTblt = child.HAISO_NO haisoFlgTblt = true"]
    CHECK_STAT_TBLT --> |false| NEXT_HAISO["next in list"]
    SET_HAISO_TBLT --> NEXT_HAISO

    CHECK_CRDL_EXISTS --> |true| MATCH_CRDL_DTL["Match haiso to kktkSvcKeiNoCrdl"]
    CHECK_CRDL_EXISTS --> |false| NEXT_HAISO
    MATCH_CRDL_DTL --> CHECK_STAT_CRDL["HAISO_STAT_UK_ZM or HAISO_STAT_CHUSI"]
    CHECK_STAT_CRDL --> |true| SET_HAISO_CRDL["haisoNoCrdl = child.HAISO_NO haisoFlgCrdl = true"]
    CHECK_STAT_CRDL --> |false| NEXT_HAISO
    SET_HAISO_CRDL --> NEXT_HAISO
    NEXT_HAISO --> END_HAISO_LOOP["End loop"]

    END_HAISO_LOOP --> CHECK_HAISO_ERR["Check: haisoFlgTblt AND isNull(haisoNoTblt)"]

    CHECK_HAISO_ERR --> |true| CLEAR_TBLT["tbltFlg = false"]
    CHECK_HAISO_ERR --> |false| CHECK_CRDL_ERR

    CLEAR_TBLT --> CHECK_CRDL_ERR

    CHECK_CRDL_ERR --> |true| CLEAR_CRDL["crdlFlg = false"]
    CHECK_CRDL_ERR --> |false| CHECK_NONE

    CLEAR_CRDL --> CHECK_NONE

    CHECK_NONE --> |true| EARLY_RETURN4["return - both flags cleared"]
    CHECK_NONE --> |false| CALL_DK0011

    EARLY_RETURN4 --> END_FAIL
    CHECK_NONE --> |false| CALL_DK0011

    CALL_DK0011["callEDK0011B090SC - Get add contract change category"]

    CALL_DK0011 --> CHECK_DIV_KIKI["IDO_DIV_KIKIKEICHGE = 00026 (Individual add)"]

    CHECK_DIV_KIKI --> |true| EARLY_RETURN5["return - individual add delivery"]
    CHECK_DIV_KIKI --> |false| GET_SHKA_FLG

    EARLY_RETURN5 --> END_FAIL
    CHECK_DIV_KIKI --> |false| GET_SHKA_FLG

    GET_SHKA_FLG["Get shkaFinJiSyrzmFlg from templates"]

    GET_SHKA_FLG --> CALL_0341A_TBLT["callEKK0341A010SC - Tablet contract"]
    GET_SHKA_FLG --> CALL_0341A_CRDL["callEKK0341A010SC - Cradle contract"]

    CALL_0341A_TBLT --> EXTRACT_SHKA_TBLT["Extract shkaFinJiSyrzmFlgTblt"]
    CALL_0341A_CRDL --> EXTRACT_SHKA_CRDL["Extract shkaFinJiSyrzmFlgCrdl"]

    EXTRACT_SHKA_TBLT --> CHECK_SHKA_TBLT["shkaFinJiSyrzmFlgTblt == 1"]
    EXTRACT_SHKA_CRDL --> CHECK_SHKA_CRDL["shkaFinJiSyrzmFlgCrdl == 1"]

    CHECK_SHKA_TBLT --> |true| CLEAR_SHKA_TBLT["tbltFlg = false"]
    CHECK_SHKA_TBLT --> |false| CHECK_SHKA_CRDL

    CLEAR_SHKA_TBLT --> CHECK_SHKA_CRDL

    CHECK_SHKA_CRDL --> |true| CLEAR_SHKA_CRDL["crdlFlg = false"]
    CHECK_SHKA_CRDL --> |false| CHECK_SHKA_NONE

    CLEAR_SHKA_CRDL --> CHECK_SHKA_NONE

    CHECK_SHKA_NONE --> |true| EARLY_RETURN6["return - both flags cleared"]
    CHECK_SHKA_NONE --> |false| CALL_0081

    EARLY_RETURN6 --> END_FAIL
    CHECK_SHKA_NONE --> |false| CALL_0081

    CALL_0081["callEKK0081A010SC - Service contract agreement"]

    CALL_0081 --> CHECK_PRCGRP["Check PRC_GRP_CD HOME=02 OR MEZON=03 OR MANSION with GLB"]

    CHECK_PRCGRP --> |false| EARLY_RETURN7["return - not eligible building type"]
    CHECK_PRCGRP --> |true| EXTRACT_0081

    EARLY_RETURN7 --> END_FAIL
    CHECK_PRCGRP --> |true| EXTRACT_0081

    EXTRACT_0081["Extract mskmDtlNo, lastUpdDtm, prcGrpCdNet, pcrsCdNet"]

    EXTRACT_0081 --> CHECK_STATE150["checkKojiakState150 (Indoor survey completed)"]

    CHECK_STATE150 --> |false| CHECK_STATE160

    CHECK_STATE150 --> |true| BLOCK150["BLOCK N-1: Indoor survey completed"]

    BLOCK150 --> CALL_0021["callEKK0021A010SC - Application details"]

    CALL_0021 --> CALL_0341C_TBLT["callEKK0341C230SC Set SKCD to empty for tablet"]
    CALL_0021 --> CALL_0341C_CRDL["callEKK0341C230SC Set SKCD to empty for cradle"]

    CALL_0341C_TBLT --> MAP_KOJIAK["editMapKojiAnkenKikiChg Map construction project"]
    CALL_0341C_CRDL --> MAP_KOJIAK

    MAP_KOJIAK --> EXEC_KOJIAK["executeKojiAnken Register tablet/cradle as home equipment"]

    EXEC_KOJIAK --> SET_TABLET_HAISO["tabletHaisoKbn = 3 (re-create)"]

    SET_TABLET_HAISO --> END_BLOCK150["End BLOCK N-1"]

    END_BLOCK150 --> CHECK_STATE160

    CHECK_STATE160 --> |true| BLOCK160["BLOCK N-2: Construction company decision completed"]

    BLOCK160 --> CALL_0341C2_TBLT["callEKK0341C230SC Set SKCD=1 (Service start target)"]
    CALL_0341C2_TBLT --> CALL_0341C2_CRDL["callEKK0341C230SC Set SKCD=1 (Service start target)"]

    CALL_0341C2_CRDL --> SET_TABLET_HAISO2["tabletHaisoKbn = 3 (re-create)"]

    SET_TABLET_HAISO2 --> END_BLOCK160["End BLOCK N-2"]

    END_BLOCK160 --> END_SUCCESS(["Exit - success"])

    END_FAIL(["Exit - early return"])

    START --> CALL491
    CALL491 --> FIND_NET
    FIND_NET --> CHECK_NET
    FIND_NET --> CHECK_HYBRID
    CHECK_NET --> EARLY_RETURN1
    CHECK_HYBRID --> EARLY_RETURN1
    CHECK_NET --> CALL0341B
    CHECK_HYBRID --> CALL0341B
    CALL0341B --> LOOP_TABLET
    LOOP_TABLET --> CHECK_TABLET
    CHECK_TABLET --> SET_TBLT
    SET_TBLT --> NEXT_TABLET
    CHECK_TABLET --> CHECK_CRADLE
    CHECK_CRADLE --> SET_CRDL
    SET_CRDL --> NEXT_TABLET
    CHECK_CRADLE --> NEXT_TABLET
    NEXT_TABLET --> END_TABLET_LOOP
    END_TABLET_LOOP --> CHECK_NO_DEVICE
    CHECK_NO_DEVICE --> EARLY_RETURN2
    CHECK_NO_DEVICE --> CALL_U0011
    CALL_U0011 --> LOOP_U0011
    LOOP_U0011 --> CALL_A010
    CALL_A010 --> EXTRACT_STAT
    EXTRACT_STAT --> CHECK_NEWESTA
    CHECK_NEWESTA --> NEXT_U0011
    CHECK_NEWESTA --> CHECK_DIV1
    CHECK_DIV1 --> SET_NETKOJIAK
    CHECK_DIV1 --> CHECK_DIV2
    CHECK_DIV2 --> SET_NETKOJIAK
    CHECK_DIV2 --> NEXT_U0011
    SET_NETKOJIAK --> NEXT_U0011
    NEXT_U0011 --> END_U0011_LOOP
    END_U0011_LOOP --> CHECK_NETKOJIAK
    CHECK_NETKOJIAK --> EARLY_RETURN3
    CHECK_NETKOJIAK --> CALL_HAISO
    CALL_HAISO --> LOOP_HAISO
    LOOP_HAISO --> MATCH_TBLT
    LOOP_HAISO --> MATCH_CRDL
    MATCH_TBLT --> CHECK_STAT_TBLT
    CHECK_STAT_TBLT --> SET_HAISO_TBLT
    CHECK_STAT_TBLT --> NEXT_HAISO
    SET_HAISO_TBLT --> NEXT_HAISO
    CHECK_CRDL_EXISTS --> MATCH_CRDL_DTL
    CHECK_CRDL_EXISTS --> NEXT_HAISO
    MATCH_CRDL_DTL --> CHECK_STAT_CRDL
    CHECK_STAT_CRDL --> SET_HAISO_CRDL
    CHECK_STAT_CRDL --> NEXT_HAISO
    SET_HAISO_CRDL --> NEXT_HAISO
    NEXT_HAISO --> END_HAISO_LOOP
    END_HAISO_LOOP --> CHECK_HAISO_ERR
    CHECK_HAISO_ERR --> CLEAR_TBLT
    CLEAR_TBLT --> CHECK_CRDL_ERR
    CHECK_CRDL_ERR --> CLEAR_CRDL
    CLEAR_CRDL --> CHECK_NONE
    CHECK_NONE --> EARLY_RETURN4
    CHECK_NONE --> CALL_DK0011
    CALL_DK0011 --> CHECK_DIV_KIKI
    CHECK_DIV_KIKI --> EARLY_RETURN5
    CHECK_DIV_KIKI --> GET_SHKA_FLG
    GET_SHKA_FLG --> CALL_0341A_TBLT
    GET_SHKA_FLG --> CALL_0341A_CRDL
    CALL_0341A_TBLT --> EXTRACT_SHKA_TBLT
    CALL_0341A_CRDL --> EXTRACT_SHKA_CRDL
    EXTRACT_SHKA_TBLT --> CHECK_SHKA_TBLT
    EXTRACT_SHKA_CRDL --> CHECK_SHKA_CRDL
    CHECK_SHKA_TBLT --> CLEAR_SHKA_TBLT
    CLEAR_SHKA_TBLT --> CHECK_SHKA_CRDL
    CHECK_SHKA_CRDL --> CLEAR_SHKA_CRDL
    CLEAR_SHKA_CRDL --> CHECK_SHKA_NONE
    CHECK_SHKA_NONE --> EARLY_RETURN6
    CHECK_SHKA_NONE --> CALL_0081
    CALL_0081 --> CHECK_PRCGRP
    CHECK_PRCGRP --> EARLY_RETURN7
    CHECK_PRCGRP --> EXTRACT_0081
    EXTRACT_0081 --> CHECK_STATE150
    CHECK_STATE150 --> BLOCK150
    CHECK_STATE150 --> CHECK_STATE160
    BLOCK150 --> CALL_0021
    CALL_0021 --> CALL_0341C_TBLT
    CALL_0341C_TBLT --> MAP_KOJIAK
    MAP_KOJIAK --> EXEC_KOJIAK
    EXEC_KOJIAK --> SET_TABLET_HAISO
    SET_TABLET_HAISO --> END_BLOCK150
    END_BLOCK150 --> CHECK_STATE160
    CHECK_STATE160 --> BLOCK160
    BLOCK160 --> CALL_0341C2_TBLT
    CALL_0341C2_TBLT --> CALL_0341C2_CRDL
    CALL_0341C2_CRDL --> SET_TABLET_HAISO2
    SET_TABLET_HAISO2 --> END_BLOCK160
    END_BLOCK160 --> END_SUCCESS
```

**Key Constant Resolutions:**

| Constant | Actual Value | Business Meaning |
|----------|-------------|------------------|
| `JKKSvcConst.SVC_CD_NET` | `"01"` | Service code for Internet (Net) |
| `JKKSvcConst.KKTK_SVC_CD_TABLET` | `"C021"` | Equipment provision service code for Tablet |
| `JKKSvcConst.KKTK_SVC_CD_CRADLE` | `"C022"` | Equipment provision service code for Tablet Cradle |
| `JKKStrConst.CD00037_UK_ZM` | `"010"` | Service contract status: Not yet provisioned |
| `JKKStrConst.CD00037_DSL_ZM` | `"910"` | Service contract status: DSL cancellation |
| `JKKStrConst.CD00037_CANCEL_ZM` | `"920"` | Service contract status: Canceled |
| `JKKStrConst.CD00134_3G21M_HYBRID` | `"A60"` | Rate plan code: 3G+21M hybrid plan |
| `JKKStrConst.CD00577_NEWESTA` | `"001"` | Construction project type: New construction |
| `KOJI_UK_OPTNTY_IDO_DIV_NEW` | `"00001"` | Contract change category: New contract |
| `KOJI_UK_OPTNTY_IDO_DIV_ADD` | `"00002"` | Contract change category: Service add |
| `JKKSvcConst.IDO_DIV_KIKIKEICHGE` | `"00026"` | Contract change category: Individual plan addition |
| `HAISO_STAT_UK_ZM` | `"001"` | Delivery status: Not provisioned (unshipped) |
| `HAISO_STAT_SJ_ZM` | `"002"` | Delivery status: Dispatch scheduled |
| `HAISO_STAT_SK_ZM` | `"003"` | Delivery status: Dispatched |
| `HAISO_STAT_KNRYO` | `"004"` | Delivery status: In transit |
| `HAISO_STAT_CHUSI` | `"005"` | Delivery status: Canceled |
| `JKKSvcConst.PCRS_CD_MANS_GLB_MHIKARI` | `"A56"` | Rate plan: Mansion global light (standard) |
| `JKKSvcConst.PCRS_CD_MANS_GLB_GHIKARI` | `"A57"` | Rate plan: Mansion global light (premium) |
| `JKKSvcConst.PCRS_CD_MANS_GLB_MPHIKARI` | `"A71"` | Rate plan: Mansion global medium-light |
| `JKKSvcConst.PCRS_CD_MANS_GLB_10GHIKARI` | `"A74"` | Rate plan: Mansion global 10G light (2025 upgrade) |
| `PRC_GRP_CD_HOME` | `"02"` | Premise group code: Home |
| `PRC_GRP_CD_MEZON` | `"03"` | Premise group code: Mezon |
| `PRC_GRP_CD_MANS` | `"04"` | Premise group code: Mansion |
| `SVC_STA_JI_HIS_JOKYO_SKCD_1` | `"1"` | Service start delivery status code: Service start delivery target |
| `TABLET_HAISO_KBN_RE_CREATE_KJ_HAISO` | `"3"` | Tablet delivery category: Re-create construction delivery |

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `handle` | `SessionHandle` | Session manager handle carrying database connections and transaction context. Used for all SC (Service Component) calls throughout the method. |
| 2 | `param` | `IRequestParameterReadWrite` | Request parameter object containing the model group, control maps, and service request data. Used as input/output carrier for all SC calls and mapper operations. |
| 3 | `sysid` | `String` | System ID for the current process. Passed through to downstream construction project processing. |
| 4 | `idoDiv` | `String` | Transfer category (異動区分) indicating the type of contract change (e.g., new, change, cancel). Passed to construction project mapper and coordinate downstream logistics operations. |
| 5 | `svcKeiNo` | `String` | Service contract number (サービス契約番号) — the primary service contract identifier for the subscription line item being processed. Used to identify the specific contract in the request contract inquiry (EKK0491B005). |
| 6 | `pcrsCd` | `String` | Rate plan code (料金コースコード) — the customer's service rate plan classification. Used to determine if the hybrid plan processing path is relevant. |

**Instance fields / external state read:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `cancelSvcKeiMapper` | `JKKCancelSvcKeiMapperCC` | Mapper coordinator for cancel service contract mapping operations. Used to call `editMapKojiAnkenKikiChg` to map construction project data for tablet/cradle equipment registration. |
| `tabletHaisoKbn` | `String` | Tablet delivery category flag stored on the class instance. Set to `"3"` (re-create) when tablet/cradle devices are processed. Communicated to logistics CC for delivery handling. |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `callEKK0491B005SC` | EKK0491B005SC | KK_T_SVC_KEI (Service Contract) | Reads request contract list for the given service contract number to find the billing contract number and check for net/other hybrid contracts |
| R | `callEKK0341B002SC` | EKK0341B002SC | KK_T_KKTK_SVC_KEI (Equipment Provision Service Contract) | Reads tablet equipment provision service contract list for the net service contract to identify tablet and cradle device contracts |
| R | `callEKU0011B010SC` | EKU0011B010SC | KK_T_KOJIAK (Construction Project) | Reads the construction project list associated with the net service contract number |
| R | `callEKU0011A010SC` | EKU0011A010SC | KK_T_KOJIAK (Construction Project) / KK_T_KOJIAK_SBT (Construction Project Type) | Reads construction project agreement details including project status, project type code, and contract change category |
| R | `searchHaisoInfo` | EDK0011B080SC | KK_T_HAISO (Delivery) / KK_T_KKTK_SVC_KEI (Equipment Provision Service Contract) | Reads delivery information linked to the net service contract, filtering by delivery status codes (unshipped, dispatched, canceled) |
| R | `callEDK0011B090SC` | EDK0011B090SC | KK_T_ADD_OPTNTY_KEI (Add Optional Contract) | Reads the add optional contract registration to determine if the delivery was for individual plan addition |
| R | `callEKK0341A010SC` | EKK0341A010SC | KK_T_KKTK_SVC_KEI (Equipment Provision Service Contract) | Reads equipment provision service contract agreement details for tablet and cradle devices to check departure completion flag |
| R | `callEKK0081A010SC` | EKK0081A010SC | KK_T_SVC_KEI (Service Contract) | Reads the service contract agreement to get premise group code, rate plan code, and mapping detail number |
| R | `callEKK0021A010SC` | EKK0021A010SC | KK_T_MSKM_DTL (Application Details) | Reads application details agreement for the mapping detail number to gather service configuration data |
| U | `callEKK0341C230SC` | EKK0341C230SC | KK_T_KKTK_SVC_KEI (Equipment Provision Service Contract) | Updates the service start delivery status code — Block N-1: sets to empty (NULL); Block N-2: sets to "1" (service start target) |
| U | `editMapKojiAnkenKikiChg` | Mapper CC | - | Maps and prepares construction project data for tablet/cradle re-creation registration (updates mapper internal state) |
| C | `executeKojiAnken` | JKKKojiAnkenCC | KK_T_KOJIAK (Construction Project) | Creates/registers a new construction project entry to enroll tablet/cradle as home equipment |

## 5. Dependency Trace

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

No screen/batch entry points found within 8 hops. Direct callers found: 3 methods.
Terminal operations from this method: `callEKK0341C230SC` [R], `callEKK0341C230SC` [R], `callEKK0341C230SC` [R], `callEKK0341C230SC` [R], `checkKojiakState160` [-], `executeKojiAnken` [-], `editMapKojiAnkenKikiChg` [U], `callEKK0341C230SC` [R], `callEKK0341C230SC` [R], `callEKK0341C230SC` [R], `callEKK0341C230SC` [R], `callEKK0021A010SC` [R], `checkKojiakState150` [-], `callEKK0081A010SC` [R], `getString` [R], `getString` [R], `getString` [R], `getString` [R], `getString` [R], `getString` [R]

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Class: `JKKSvkeiShosaClCC` | `processHybridPlan` -> `updateTbltKei(handle, param, svcKeiNo, pcrsCd, ...)` | `callEKK0341C230SC [U] KK_T_KKTK_SVC_KEI`, `executeKojiAnken [C] KK_T_KOJIAK`, `editMapKojiAnkenKikiChg [U] mapper` |

**How this method fits in the system:**

This method is called from `JKKSvkeiShosaClCC.updateTbltKei()` when processing the 3G+21M hybrid plan (3G+21M光ハイブリッド). The caller `JKKSvkeiShosaClCC` is a service inquiry class that processes service contract inquiry operations. When the hybrid plan is detected during the inquiry, it delegates to `updateTbltKei` to perform the tablet device delivery status update.

**Call chain context:**
- A screen (KKSV0004 or similar service inquiry screen) calls the service inquiry CBS
- The CBS invokes `JKKSvkeiShosaClCC` which iterates over contract results
- When `pcrsCd` matches the 3G+21M hybrid code (`"A60"`), it calls `updateTbltKei`
- `updateTbltKei` performs multi-step validation and potentially registers tablet/cradle as home equipment

**Terminal operations from this method:**
- `callEKK0341C230SC` [Update] `KK_T_KKTK_SVC_KEI` — Updates equipment provision service contract delivery status
- `executeKojiAnken` [Create] `KK_T_KOJIAK` — Creates construction project registration
- `editMapKojiAnkenKikiChg` [Update] Mapper internal — Prepares construction project mapping data
- `callEKK0021A010SC` [Read] `KK_T_MSKM_DTL` — Reads application details
- `callEKK0081A010SC` [Read] `KK_T_SVC_KEI` — Reads service contract agreement
- `callEKK0011A010SC` [Read] `KK_T_KOJIAK` — Reads construction project agreement
- `callEKU0011B010SC` [Read] `KK_T_KOJIAK` — Reads construction project list
- `callEKK0341B002SC` [Read] `KK_T_KKTK_SVC_KEI` — Reads equipment provision service contract
- `callEKK0491B005SC` [Read] `KK_T_SVC_KEI` — Reads request contract list
- `searchHaisoInfo` [Read] `KK_T_HAISO` — Reads delivery information
- `callEDK0011B090SC` [Read] `KK_T_ADD_OPTNTY_KEI` — Reads add optional contract data
- `callEKK0341A010SC` [Read] `KK_T_KKTK_SVC_KEI` — Reads equipment provision service contract agreement

## 6. Per-Branch Detail Blocks

### Block 1 — INIT | Request contract inquiry (L10716-L10718)

Initializes the request contract inquiry by calling the EKK0491B005 SC (billing contract list inquiry) to retrieve all contracts associated with the service.

| # | Type | Code |
|---|------|------|
| 1 | SET | `resultKK491B005List = new ArrayList<>()` // Initialize result list |
| 2 | CALL | `callEKK0491B005SC(param, handle, sysid, resultKK491B005List)` // Request contract list inquiry |

### Block 2 — FOR | Find billing contract number by svcKeiNo (L10720-L10727)

Iterates over the request contract list to find the matching billing contract number (hybrid contract number) for the given service contract number.

| # | Type | Code |
|---|------|------|
| 1 | SET | `seikyKeiNo = ""` // Billing contract number (hybrid) |
| 2 | SET | `tmpSvcKeiNo = resultKK491B005List[i].get(SVC_KEI_NO)` // Extract service contract number |
| 3 | IF | `svcKeiNo.equals(tmpSvcKeiNo)` [L10723] |
| 4 | SET | `seikyKeiNo = resultKK491B005List[i].get(SEIKY_KEI_NO)` // Found: set billing contract number |
| 5 | EXEC | `break` // Exit loop |

### Block 3 — FOR | Check net contract and other hybrid (L10732-L10762)

Scans all contracts to find (a) the net service contract number matching the same billing contract number, and (b) any other hybrid plans belonging to a different service contract.

| # | Type | Code |
|---|------|------|
| 1 | SET | `anotherHybridFlg = false` // Flag for other hybrid detection |
| 2 | SET | `svcKeiNoNet = ""` // Net service contract number |
| 3 | SET | `svcCd = resultKK491B005List[i].get(SVC_CD)` // Extract service code |
| 4 | SET | `tmpPcrsCd = resultKK491B005List[i].get(PCRS_CD)` // Extract rate plan code |
| 5 | SET | `tmpSvcKeiNo = resultKK491B005List[i].get(SVC_KEI_NO)` // Service contract number |
| 6 | SET | `svcKeiStat = resultKK491B005List[i].get(SVC_KEI_STAT)` // Service contract status |
| 7 | SET | `tmpSeikyKeiNo = resultKK491B005List[i].get(SEIKY_KEI_NO)` // Billing contract number |
| 8 | IF | `JKKSvcConst.SVC_CD_NET.equals(svcCd)` [L10743] (SVC_CD_NET = "01") |
| 9 | IF | `!JKKStrConst.CD00037_UK_ZM.equals(svcKeiStat)` (CD00037_UK_ZM = "010") |
| 10 | IF | `!JKKStrConst.CD00037_DSL_ZM.equals(svcKeiStat)` (CD00037_DSL_ZM = "910") |
| 11 | IF | `!JKKStrConst.CD00037_CANCEL_ZM.equals(svcKeiStat)` (CD00037_CANCEL_ZM = "920") |
| 12 | IF | `seikyKeiNo.equals(tmpSeikyKeiNo)` [L10748] |
| 13 | SET | `svcKeiNoNet = tmpSvcKeiNo` // Found valid net contract |
| 14 | IF | `JKKStrConst.CD00134_3G21M_HYBRID.equals(tmpPcrsCd)` [L10754] (CD00134_3G21M_HYBRID = "A60") |
| 15 | IF | `!JKKStrConst.CD00037_UK_ZM.equals(svcKeiStat)` (not unshipped) |
| 16 | IF | `!JKKStrConst.CD00037_DSL_ZM.equals(svcKeiStat)` (not DSL canceled) |
| 17 | IF | `!JKKStrConst.CD00037_CANCEL_ZM.equals(svcKeiStat)` (not canceled) |
| 18 | IF | `!tmpSvcKeiNo.equals(svcKeiNo)` (different service contract) |
| 19 | SET | `anotherHybridFlg = true` // Another hybrid plan exists on different contract |

### Block 4 — IF | Early return guard: no net or another hybrid | `isNull(svcKeiNoNet) || anotherHybridFlg` (L10766)

If the net contract is not found, or if another hybrid plan exists on a different service contract, return immediately. This prevents processing when the service environment is not a clean single-hybrid setup.

| # | Type | Code |
|---|------|------|
| 1 | IF | `isNull(svcKeiNoNet) || anotherHybridFlg` (L10766) |
| 2 | RETURN | `return` // Cannot proceed without net contract or conflicting hybrid plan |

### Block 5 — FOR | Tablet contract inquiry (L10772-L10816)

Calls the tablet equipment provision service contract inquiry (EKK0341B002SC) and extracts the service contract numbers for tablet (C021) and cradle (C022) devices.

| # | Type | Code |
|---|------|------|
| 1 | SET | `resultKK0341B002List = new ArrayList<>()` |
| 2 | SET | `kktkSvcKeiNoTblt = ""` // Tablet device service contract number |
| 3 | SET | `kktkSvcKeiNoCrdl = ""` // Cradle device service contract number |
| 4 | SET | `tbltFlg = false` // Tablet processing flag |
| 5 | SET | `crdlFlg = false` // Cradle processing flag |
| 6 | IF | `resultKK0341B002List != null && size > 0` (L10791) |
| 7 | FOR | `k = 0` to `resultKK0341B002List.size()` |
| 8 | SET | `kktkSvcCd = resultKK0341B002List[k].get(KKTK_SVC_CD)` // Equipment provision service code |
| 9 | IF | `JKKSvcConst.KKTK_SVC_CD_TABLET.equals(kktkSvcCd)` [L10797] (KKTK_SVC_CD_TABLET = "C021") |
| 10 | SET | `kktkSvcKeiNoTblt = resultKK0341B002List[k].get(KKTK_SVC_KEI_NO)` |
| 11 | SET | `tbltFlg = true` |
| 12 | IF | `JKKSvcConst.KKTK_SVC_CD_CRADLE.equals(kktkSvcCd)` [L10803] (KKTK_SVC_CD_CRADLE = "C022") |
| 13 | SET | `kktkSvcKeiNoCrdl = resultKK0341B002List[k].get(KKTK_SVC_KEI_NO)` |
| 14 | SET | `crdlFlg = true` |

### Block 6 — IF | Early return: no tablet or cradle | `!tbltFlg && !crdlFlg` (L10820)

If neither tablet nor cradle device contracts were found, return. This is the updated logic from IT1-2014-0000315 — using explicit boolean flags instead of null checks on contract numbers.

| # | Type | Code |
|---|------|------|
| 1 | IF | `!tbltFlg && !crdlFlg` (L10820) |
| 2 | RETURN | `return` // No tablet or cradle device contracts found |

### Block 7 — FOR | Construction project inquiry (L10827-L10859)

Retrieves the construction project list for the net service contract and finds the new construction project (KOJIAK_SBT_CD = "001") with either new contract (00001) or service add (00002) change category.

| # | Type | Code |
|---|------|------|
| 1 | SET | `resultKU0011B010List = new ArrayList<>()` |
| 2 | CALL | `callEKU0011B010SC(param, handle, svcKeiNoNet, resultKU0011B010List)` |
| 3 | FOR | `i = 0` to `resultKU0011B010List.size()` |
| 4 | SET | `kojiakNo = resultKU0011B010List[i].get(KOJIAK_NO)` // Construction project number |
| 5 | CALL | `eku0011a010Msg = callEKU0011A010SC(param, handle, kojiakNo)` // Construction agreement |
| 6 | SET | `eku0011a010ListMsg = eku0011a010Msg.getCAANMsgList(...)[0]` |
| 7 | SET | `kojiakStat = eku0011a010ListMsg.getString(KOJIAK_STAT)` // Construction project status |
| 8 | SET | `kojiakSbtCd = eku0011a010ListMsg.getString(KOJIAK_SBT_CD)` // Construction project type code |
| 9 | SET | `kojiukOptIdoDiv = eku0011a010ListMsg.getString(KOJI_UK_OPTNTY_IDO_DIV)` // Contract change category |
| 10 | IF | `checkKojiakState(kojiakStat)` (L10844) |
| 11 | IF | `JKKStrConst.CD00577_NEWESTA.equals(kojiakSbtCd)` (CD00577_NEWESTA = "001") |
| 12 | IF | `KOJI_UK_OPTNTY_IDO_DIV_NEW.equals(kojiukOptIdoDiv) \|\| KOJI_UK_OPTNTY_IDO_DIV_ADD.equals(kojiukOptIdoDiv)` (IDO_DIV_NEW = "00001", IDO_DIV_ADD = "00002") |
| 13 | SET | `netKojiak = eku0011a010ListMsg` // Found the matching new construction project |
| 14 | EXEC | `break` |

### Block 8 — IF | Early return: no new construction | `netKojiak == null` (L10862)

If no new construction project was found for the net service, return. The method only applies to net services with active new construction.

| # | Type | Code |
|---|------|------|
| 1 | IF | `netKojiak == null` (L10862) |
| 2 | RETURN | `return` // No net new construction found |

### Block 9 — INIT | Delivery information inquiry (L10869-L10877)

Calls `JKKBpCommon.searchHaisoInfo` to retrieve delivery information for the net service contract, filtering by delivery statuses: unshipped (001), dispatched scheduled (002), dispatched (003), in transit (004), and canceled (005).

| # | Type | Code |
|---|------|------|
| 1 | SET | `workEDK0011B080Rslt = new HashMap<>()` |
| 2 | SET | `haisoStatList = new ArrayList<String>()` |
| 3 | EXEC | `haisoStatList.add(HAISO_STAT_UK_ZM)` // HAISO_STAT_UK_ZM = "001" |
| 4 | EXEC | `haisoStatList.add(HAISO_STAT_SJ_ZM)` // HAISO_STAT_SJ_ZM = "002" |
| 5 | EXEC | `haisoStatList.add(HAISO_STAT_SK_ZM)` // HAISO_STAT_SK_ZM = "003" |
| 6 | EXEC | `haisoStatList.add(HAISO_STAT_KNRYO)` // HAISO_STAT_KNRYO = "004" |
| 7 | EXEC | `haisoStatList.add(HAISO_STAT_CHUSI)` // HAISO_STAT_CHUSI = "005" |
| 8 | CALL | `JKKBpCommon.searchHaisoInfo(param, handle, svcKeiNoNet, null, null, null, haisoStatList, workEDK0011B080Rslt, "cancelSvcKeiCCSearchHaiso")` |

### Block 10 — FOR | Match delivery numbers to devices (L10879-L10914)

Iterates over delivery info results to match tablet and cradle device contract numbers with delivery numbers. A delivery is only captured if its status is unshipped (001) or canceled (005).

| # | Type | Code |
|---|------|------|
| 1 | SET | `eDK0011B080CBSMSG1LIST = workEDK0011B080Rslt.get(EDK0011B080CBSMSG1LIST)` |
| 2 | SET | `haisoNoTblt = ""` // Delivery number for tablet |
| 3 | SET | `haisoNoCrdl = ""` // Delivery number for cradle |
| 4 | SET | `haisoFlgTblt = false` // Tablet delivery found flag |
| 5 | SET | `haisoFlgCrdl = false` // Cradle delivery found flag |
| 6 | SET | `haisoTaibpinNoTblt = ""` // Delivery target number for tablet (for optional add check) |
| 7 | FOR | `l = 0` to `eDK0011B080CBSMSG1LIST.length` |
| 8 | SET | `childTemplate = eDK0011B080CBSMSG1LIST[l]` |
| 9 | SET | `haisoStat = childTemplate.getString(HAISO_STAT)` |
| 10 | IF | `kktkSvcKeiNoTblt.equals(childTemplate.getString(KKTK_SVC_KEI_NO))` (L10887) |
| 11 | SET | `haisoFlgTblt = true` |
| 12 | IF | `HAISO_STAT_UK_ZM.equals(haisoStat) \|\| HAISO_STAT_CHUSI.equals(haisoStat)` (L10888) |
| 13 | SET | `haisoNoTblt = childTemplate.getString(HAISO_NO)` |
| 14 | SET | `haisoTaibpinNoTblt = childTemplate.getString(HAISO_TAIBPIN_NO)` |
| 15 | IF | `!StringUtils.isEmpty(kktkSvcKeiNoCrdl) && kktkSvcKeiNoCrdl.equals(childTemplate.getString(KKTK_SVC_KEI_NO))` (L10895) |
| 16 | SET | `haisoFlgCrdl = true` |
| 17 | IF | `HAISO_STAT_UK_ZM.equals(haisoStat) \|\| HAISO_STAT_CHUSI.equals(haisoStat)` (L10897) |
| 18 | SET | `haisoNoCrdl = childTemplate.getString(HAISO_NO)` |

### Block 11 — IF | Early return: delivery in progress | `haisoFlgTblt && isNull(haisoNoTblt)` (L10903)

If a tablet delivery was found but no delivery number is available (delivery is in progress — status 002, 003, or 004), clear the tablet flag. Same for cradle. If both flags are cleared, return early.

| # | Type | Code |
|---|------|------|
| 1 | IF | `haisoFlgTblt && isNull(haisoNoTblt)` (L10903) |
| 2 | SET | `tbltFlg = false` // Clear tablet processing flag |
| 3 | IF | `haisoFlgCrdl && isNull(haisoNoCrdl)` (L10905) |
| 4 | SET | `crdlFlg = false` // Clear cradle processing flag |
| 5 | IF | `!tbltFlg && !crdlFlg` (L10907) |
| 6 | RETURN | `return` // Both flags cleared — skip processing |

### Block 12 — IF | Check individual plan addition delivery | `IDO_DIV_KIKIKEICHGE = "00026"` (L10912-L10922)

Calls EDK0011B090SC to check if the delivery was for an individual plan addition (登録契契約異動区分 = 00026). If so, skip processing. This prevents modifying deliveries that were created as part of individual plan additions.

| # | Type | Code |
|---|------|------|
| 1 | SET | `addOptntyKeiIdoDiv = ""` |
| 2 | SET | `resultDK0011B090List = new ArrayList<>()` |
| 3 | CALL | `callEDK0011B090SC(param, handle, haisoTaibpinNoTblt, resultDK0011B090List)` |
| 4 | IF | `resultDK0011B090List != null && size > 0` (L10916) |
| 5 | SET | `addOptntyKeiIdoDiv = resultDK0011B090List.get(0).get(ADD_OPTNTY_KEI_IDO_DIV)` |
| 6 | IF | `JKKSvcConst.IDO_DIV_KIKIKEICHGE.equals(addOptntyKeiIdoDiv)` [L10920] (IDO_DIV_KIKIKEICHGE = "00026") |
| 7 | RETURN | `return` // Skip — individual plan addition delivery |

### Block 13 — INIT | Get departure completion flag (L10926-L10939)

Calls EKK0341A010SC to retrieve equipment provision service contract agreement details for both tablet and cradle devices. Extracts the departure completion flag (shkaFinJiSyrzmFlg) for each. If the flag is "1" (departure completed), clear the respective processing flag.

| # | Type | Code |
|---|------|------|
| 1 | SET | `shkaFinJiSyrzmFlgTblt = ""` |
| 2 | SET | `shkaFinJiSyrzmFlgCrdl = ""` |
| 3 | IF | `!"".equals(kktkSvcKeiNoTblt)` (L10933) |
| 4 | CALL | `ekk0341A010Msg = callEKK0341A010SC(param, handle, kktkSvcKeiNoTblt)` |
| 5 | SET | `tbltTemplate = ekk0341A010Msg.getCAANMsgList(EKK0341A010CBSMSG1LIST)[0]` |
| 6 | SET | `shkaFinJiSyrzmFlgTblt = tbltTemplate.getString(SHKA_FIN_JI_SYRZM_FLG)` |
| 7 | IF | `!"".equals(kktkSvcKeiNoCrdl)` (L10938) |
| 8 | CALL | `ekk0341A010Msg = callEKK0341A010SC(param, handle, kktkSvcKeiNoCrdl)` |
| 9 | SET | `crdlTemplate = ekk0341A010Msg.getCAANMsgList(EKK0341A010CBSMSG1LIST)[0]` |
| 10 | SET | `shkaFinJiSyrzmFlgCrdl = tbltTemplate.getString(SHKA_FIN_JI_SYRZM_FLG)` // NOTE: uses tbltTemplate (potential bug) |

### Block 14 — IF | Early return: departure completed | `shkaFinJiSyrzmFlgTblt == "1"` (L10943)

If the departure completion flag is "1" for either device, clear that device's processing flag. If both are cleared, return. The method only processes devices where departure has not been completed.

| # | Type | Code |
|---|------|------|
| 1 | IF | `"1".equals(shkaFinJiSyrzmFlgTblt)` (L10943) |
| 2 | SET | `tbltFlg = false` |
| 3 | IF | `"1".equals(shkaFinJiSyrzmFlgCrdl)` (L10945) |
| 4 | SET | `crdlFlg = false` |
| 5 | IF | `!tbltFlg && !crdlFlg` (L10947) |
| 6 | RETURN | `return` // Both flags cleared — skip |

### Block 15 — INIT | Service contract agreement | `checkKojiakState150(kojiakStat)` (L10951-L10952)

Extracts the construction project status from the net construction project and checks if the status corresponds to "indoor survey completed" (checkKojiakState150). This determines the processing branch N-1.

| # | Type | Code |
|---|------|------|
| 1 | SET | `kojiakStat = netKojiak.getString(KOJIAK_STAT)` |
| 2 | IF | `checkKojiakState150(kojiakStat)` (L10952) — Indoor survey completed |

### Block 15.1 — BLOCK N-1: Indoor survey completed (L10955-L11032)

**Business description:** When the construction project status is "indoor survey completed" (宅内調査完了済), the method sets the service start delivery status code to NULL for tablet/cradle devices (clearing any pending delivery identification), maps the tablet/cradle as re-created home equipment, and registers them as new home equipment through the construction project process. The tablet delivery category (`tabletHaisoKbn`) is set to "3" (re-create).

| # | Type | Code |
|---|------|------|
| 1 | SET | `eKK0021A010Map = new HashMap<>()` |
| 2 | CALL | `callEKK0021A010SC(param, handle, mskmDtlNo, eKK0021A010Map)` // Application details agreement |
| 3 | IF | `tbltFlg` (L10961) |
| 4 | SET | `lastUpdDtm = callEKK0341C230SC(param, handle, tbltTemplate, lastUpdDtm, "")` // Set SKCD to empty (NULL) |
| 5 | IF | `crdlFlg` (L10964) |
| 6 | SET | `lastUpdDtm = callEKK0341C230SC(param, handle, crdlTemplate, lastUpdDtm, "")` // Set SKCD to empty (NULL) |
| 7 | SET | `kojiCC = new JKKKojiAnkenCC()` |
| 8 | CALL | `cancelSvcKeiMapper.editMapKojiAnkenKikiChg(param, sysid, eKK0021A010Map, eKK0081A010Hash, idoDiv, TABLET_HAISO_KBN_RE_CREATE_KJ_HAISO)` |
| 9 | CALL | `kojiCC.executeKojiAnken(handle, param, "fixedTextTabletAddKoji")` // Register tablet/cradle as home equipment |
| 10 | IF | `tbltFlg \|\| crdlFlg` (L11029) |
| 11 | SET | `tabletHaisoKbn = JKKKojiAnkenConstCC.TABLET_HAISO_KBN_RE_CREATE_KJ_HAISO` // = "3" |

### Block 15.2 — ELSE IF | `checkKojiakState160(kojiakStat)` (L11034) — BLOCK N-2: Construction company decision completed

**Business description:** When the construction project status is "construction company decision completed" (工事会社決定済), the method sets the service start delivery status code to "1" (service start delivery target) for tablet/cradle devices, indicating they should be delivered as part of the service activation process. The tablet delivery category (`tabletHaisoKbn`) is set to "3" (re-create).

| # | Type | Code |
|---|------|------|
| 1 | IF | `tbltFlg` (L11045) |
| 2 | SET | `lastUpdDtm = callEKK0341C230SC(param, handle, tbltTemplate, lastUpdDtm, SVC_STA_JI_HIS_JOKYO_SKCD_1)` // Set SKCD = "1" |
| 3 | IF | `crdlFlg` (L11048) |
| 4 | SET | `lastUpdDtm = callEKK0341C230SC(param, handle, crdlTemplate, lastUpdDtm, SVC_STA_JI_HIS_JOKYO_SKCD_1)` // Set SKCD = "1" |
| 5 | IF | `tbltFlg \|\| crdlFlg` (L11055) |
| 6 | SET | `tabletHaisoKbn = JKKKojiAnkenConstCC.TABLET_HAISO_KBN_RE_CREATE_KJ_HAISO` // = "3" |

### Block 16 — (Fallback) Service contract eligibility check (L10986-L11007)

Prior to the construction state branches, the method retrieves the service contract agreement via EKK0081A010SC and validates the premise group code. It only proceeds if the premise is a home (02), mezon (03), or mansion (04) with a global light rate plan.

| # | Type | Code |
|---|------|------|
| 1 | SET | `eKK0081A010Hash = new HashMap<>()` |
| 2 | SET | `inHash = new HashMap<>()` |
| 3 | EXEC | `inHash.put(REQ_PARAM_SVC_KEI_NO, svcKeiNoNet)` |
| 4 | CALL | `callEKK0081A010SC(param, handle, inHash, eKK0081A010Hash)` |
| 5 | SET | `prcGrpCdNet = eKK0081A010Hash.get(PRC_GRP_CD)` |
| 6 | SET | `pcrsCdNet = eKK0081A010Hash.get(PCRS_CD)` |
| 7 | IF | `!PRC_GRP_CD_HOME.equals(prcGrpCdNet) && !PRC_GRP_CD_MEZON.equals(prcGrpCdNet)` (PRC_GRP_CD_HOME = "02", PRC_GRP_CD_MEZON = "03") |
| 8 | IF | `!(PRC_GRP_CD_MANS.equals(prcGrpCdNet) && (PCRS_CD_MANS_GLB_MHIKARI.equals(pcrsCdNet) || PCRS_CD_MANS_GLB_GHIKARI.equals(pcrsCdNet) || PCRS_CD_MANS_GLB_MPHIKARI.equals(pcrsCdNet) || PCRS_CD_MANS_GLB_10GHIKARI.equals(pcrsCdNet)))` |
| 9 | RETURN | `return` // Not a home/mezon/mansion-glb-eligible premise |
| 10 | SET | `mskmDtlNo = eKK0081A010Hash.get(MSKM_DTL_NO)` |
| 11 | SET | `lastUpdDtm = eKK0081A010Hash.get(LAST_UPD_DTM)` |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `updateTbltKei` | Method | Tablet contract status update — processes tablet device delivery changes during hybrid plan cancellation |
| `svcKeiNo` | Field | Service contract number (サービス契約番号) — unique identifier for a service contract line item |
| `pcrsCd` | Field | Rate plan code (料金コースコード) — classifies the customer's service plan (e.g., 3G+21M hybrid = "A60") |
| `idoDiv` | Field | Transfer/category code (異動区分) — indicates the type of contract change operation |
| `seikyKeiNo` | Field | Billing contract number (請求契約番号) — the higher-level billing contract that groups multiple service contracts |
| `svcKeiNoNet` | Field | Net service contract number — the internet-specific service contract number within a hybrid bundle |
| `anotherHybridFlg` | Field | Boolean flag indicating whether another hybrid plan exists on a different service contract |
| `KOJIAK` | Acronym | Construction project (工事案件) — Fujitsu internal term for installation/construction work orders |
| `kojiakStat` | Field | Construction project status (工事案件ステータス) — tracks the lifecycle stage of construction work |
| `kojiakSbtCd` | Field | Construction project type code (工事案件種類コード) — classifies construction as new (001), modification, etc. |
| `kojiukOptIdoDiv` | Field | Construction optional contract change category (工事受払契異動区分) — new contract (00001), service add (00002) |
| `KKTK_SVC_CD` | Field | Equipment provision service code (機器提供サービスコード) — identifies device type: C021 = tablet, C022 = cradle |
| `kktkSvcKeiNoTblt` | Field | Tablet device service contract number (タブレット端末機器提供サービス契約番号) |
| `kktkSvcKeiNoCrdl` | Field | Cradle device service contract number (タブレット用クレードル機器提供サービス契約番号) |
| `tbltFlg` | Field | Tablet processing flag — indicates whether tablet device processing should proceed |
| `crdlFlg` | Field | Cradle processing flag — indicates whether cradle device processing should proceed |
| `shkaFinJiSyrzmFlg` | Field | Departure completion flag (出荷完了時処理済フラグ) — "1" means the device departure completion process has been executed |
| `HAISO_STAT` | Field | Delivery status (配送ステータス) — 001=unshipped, 002=dispatch scheduled, 003=dispatched, 004=in transit, 005=canceled |
| `haisoNoTblt` | Field | Delivery number for tablet device (タブレット端末の配送番号) |
| `haisoNoCrdl` | Field | Delivery number for cradle device (クレードルの配送番号) |
| `haisoTaibpinNoTblt` | Field | Delivery target number for tablet (配送対象番号) — used to check optional plan additions |
| `addOptntyKeiIdoDiv` | Field | Add optional contract change category (登録契契約異動区分) — "00026" indicates individual plan addition |
| `PRC_GRP_CD` | Field | Premise group code (敷地グループコード) — building type: 02=home, 03=mezon, 04=mansion |
| `mskmDtlNo` | Field | Mapping detail number (マスキング詳細番号) — unique identifier for application detail records |
| `tabletHaisoKbn` | Field | Tablet delivery category (タブレット配送区分) — "3" means re-create construction delivery |
| `SVC_STA_JI_HIS_JOKYO_SKCD` | Field | Service start delivery status code (サービス開始時配送状況識別コード) — "1" = service start delivery target |
| FTTH | Business term | Fiber To The Home — fiber-optic broadband internet service (eo光テレビ) |
| Hybrid plan | Business term | 光ハイブリッド — bundled internet + mobile service plan (e.g., 3G+21M = "A60") |
| Koji anken | Business term | 工事案件 — construction project/work order for equipment installation |
| EKK0491B005SC | SC | Request contract inquiry SC — retrieves billing contract list |
| EKK0341B002SC | SC | Tablet contract inquiry SC — retrieves equipment provision service contract for tablet/cradle |
| EKU0011B010SC | SC | Construction project list SC — retrieves construction projects by service contract |
| EKU0011A010SC | SC | Construction project agreement SC — retrieves construction project agreement details |
| EDK0011B080SC | SC | Delivery information inquiry SC — retrieves delivery records |
| EDK0011B090SC | SC | Add optional contract SC — retrieves add optional contract details |
| EKK0341A010SC | SC | Equipment provision contract agreement SC — retrieves equipment provision service details |
| EKK0081A010SC | SC | Service contract agreement SC — retrieves service contract details |
| EKK0021A010SC | SC | Application details agreement SC — retrieves application detail records |
| EKK0341C230SC | SC | Equipment provision service update SC — updates service start delivery status code |
| JKKKojiAnkenCC | Component | Construction project CC — handles construction project registration and CRUD operations |
| JKKCancelSvcKeiMapperCC | Component | Cancel service contract mapper CC — maps data for cancel service contract operations |
| CD00037_UK_ZM | Constant | Service contract status code "010" — not yet provisioned (未供) |
| CD00037_DSL_ZM | Constant | Service contract status code "910" — DSL cancellation (DSL取消) |
| CD00037_CANCEL_ZM | Constant | Service contract status code "920" — canceled (取消) |
| CD00577_NEWESTA | Constant | Construction project type code "001" — new construction (新設工事) |
| IDO_DIV_KIKIKEICHGE | Constant | Contract change category "00026" — individual plan addition (個別追加) |
| TABLET_HAISO_KBN_RE_CREATE_KJ_HAISO | Constant | Tablet delivery category "3" — re-create construction delivery (再作成工事配送) |