# Business Logic — JKKWrisvcAutoAplyCC.chkCcMapInputData() [440 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `com.fujitsu.futurity.bp.custom.common.JKKWrisvcAutoAplyCC` |
| Layer | CC/Common Component (Enterprise JavaBean component class in the custom business process layer) |
| Module | `common` (Package: `com.fujitsu.futurity.bp.custom.common`) |

## 1. Role

### JKKWrisvcAutoAplyCC.chkCcMapInputData()

This method performs comprehensive input data validation for the Discount Service Auto-Application screen KKSV0313. It is the primary gatekeeper that ensures all required data fields within the CC Map (work area HashMap) are present, non-blank, and carry legally valid codes before the auto-application processing proceeds. The CC Map is a structured nested data container holding operation-level metadata (function code, order number, system ID, add/change division) and a deeply nested list of service contract groups, each containing individual service contract records.

The method implements a sequential validation gate pattern: it checks top-level required fields first (function code, system ID, add/change division, order number, order type code, movement division), then applies conditional validation based on the add/change division code — for example, requiring a service termination reason code only when the operation is "Termination" (解除), and requiring an old system ID only when merging or splitting customer records. Finally, it iterates through every service contract group and every service contract record within, validating the target contract identification code and its type-specific mandatory fields.

The function code branching supports two operational modes: "Check-only" mode (CHK_ONLY_FUNC_CD = "2") skips all detailed data validation and returns true immediately, enabling pre-flight screen validation. "Check and Register" mode (CHK_ADD_FUNC_CD = "1") proceeds with full validation. Any other function code is rejected as invalid.

This method serves as the central shared utility called exclusively by `JKKWrisvcAutoAplyCC.execute()`, which is the entry point for the automatic discount service application business logic triggered from the KKSV0313 screen.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["chkCcMapInputData(ccMapNm, cmnParam)"])

    START --> A["Get ccMap from cmnParam.getData(ccMapNm)"]

    A --> B{"ccMap == null?"}
    B -- Yes --> B1["Log CC_MAP_DATA_NULL_EXPTN_MSG + ccMapNm"]
    B1 --> B2["Return false"]

    B -- No --> C["Get funcCd from ccMap"]

    C --> D{"funcCd == null or BLANK?"}
    D -- Yes --> D1["Log CC_MAP_DATA_NULL_EXPTN_MSG + FUNC_CODE"]
    D1 --> D2["Return false"]

    D -- No --> E{"funcCd == CHK_ONLY_FUNC_CD (2)?"}
    E -- Yes --> E1["Skip remaining checks check-only mode"]
    E1 --> E2["Return true"]

    E -- No --> F{"funcCd == CHK_ADD_FUNC_CD (1)?"}
    F -- No --> F1["Log CC_MAP_DATA_FUSEI_EXPTN_MSG + FUNC_CODE"]
    F1 --> F2["Return false"]

    F -- Yes --> G["Get sysid from ccMap"]

    G --> H{"sysid == null or BLANK?"}
    H -- Yes --> H1["Log CC_MAP_DATA_NULL_EXPTN_MSG + SYSID"]
    H1 --> H2["Return false"]

    H -- No --> I["Get addChgeDiv from ccMap"]

    I --> J{"addChgeDiv == null or BLANK?"}
    J -- Yes --> J1["Log CC_MAP_DATA_NULL_EXPTN_MSG + ADD_CHGE_DIV"]
    J1 --> J2["Return false"]

    J -- No --> K{"addChgeDiv in ADD_CHGE_DIV_ARY?"}
    K -- No --> K1["Log CC_MAP_DATA_FUSEI_EXPTN_MSG + ADD_CHGE_DIV"]
    K1 --> K2["Return false"]

    K -- Yes --> L["Get mskmNo from ccMap"]

    L --> M{"mskmNo == null or BLANK?"}
    M -- Yes --> M1["Log CC_MAP_DATA_NULL_EXPTN_MSG + MSKM_NO"]
    M1 --> M2["Return false"]

    M -- No --> N["Get mskmSbtCd from ccMap"]

    N --> O{"mskmSbtCd == null or BLANK?"}
    O -- Yes --> O1["Log CC_MAP_DATA_NULL_EXPTN_MSG + MSKM_SBT_CD"]
    O1 --> O2["Return false"]

    O -- No --> P["Get idoDiv from ccMap"]

    P --> Q{"idoDiv == null or BLANK?"}
    Q -- Yes --> Q1["Log CC_MAP_DATA_NULL_EXPTN_MSG + IDO_DIV"]
    Q1 --> Q2["Return false"]

    Q -- No --> R["Get svcDlreCd from ccMap"]

    R --> S{"ADD_CHGE_DIV == DSL (03)?"}
    S -- Yes --> S1{"svcDlreCd == null or BLANK?"}
    S1 -- Yes --> S2["Log CC_MAP_DATA_NULL_EXPTN_MSG + SVC_DLRE_CD"]
    S2 --> S3["Return false"]
    S1 -- No --> S4[Continue]

    S -- No --> S4

    S4 --> T["Get svcCancelRsnCd from ccMap"]

    T --> U{"ADD_CHGE_DIV == CNCL (05)?"}
    U -- Yes --> U1{"svcCancelRsnCd == null or BLANK?"}
    U1 -- Yes --> U2["Log CC_MAP_DATA_NULL_EXPTN_MSG + SVC_CANCEL_RSN_CD"]
    U2 --> U3["Return false"]
    U1 -- No --> U4[Continue]

    U -- No --> U4

    U4 --> V["Get oldSysid from ccMap"]

    V --> W{"ADD_CHGE_DIV in CUST_PLS (11) or CUST_SLT (12)?"}
    W -- Yes --> W1{"oldSysid == null or BLANK?"}
    W1 -- Yes --> W2["Log CC_MAP_DATA_NULL_EXPTN_MSG + OLD_SYSID"]
    W2 --> W3["Return false"]
    W1 -- No --> W4[Continue]

    W -- No --> W4

    W4 --> X["Get oldSeikyKeiNo from ccMap"]

    X --> Y{"ADD_CHGE_DIV in BILL_PLS (13) or BILL_SLT (14)?"}
    Y -- Yes --> Y1{"oldSeikyKeiNo == null or BLANK?"}
    Y1 -- Yes --> Y2["Log CC_MAP_DATA_NULL_EXPTN_MSG + OLD_SEIKY_KEI_NO"]
    Y2 --> Y3["Return false"]
    Y1 -- No --> Y4[Continue]

    Y -- No --> Y4

    Y4 --> Z["Get svcKeiGrpList from ccMap"]

    Z --> Z1{"svcKeiGrpList == null?"}
    Z1 -- Yes --> Z2["Log CC_MAP_DATA_NULL_EXPTN_MSG + SVC_KEI_GRP_LIST"]
    Z2 --> Z3["Return false"]
    Z1 -- No --> Z4{"svcKeiGrpList.size() <= 0?"}
    Z4 -- Yes --> Z5["Log CC_MAP_DATA_FUSEI_EXPTN_MSG + SVC_KEI_GRP_LIST"]
    Z5 --> Z6["Return false"]

    Z4 -- No --> Z7["FOR each ccMapSvcKeiGrp in svcKeiGrpList"]

    Z7 --> Z8["Get grpDiv from ccMapSvcKeiGrp"]

    Z8 --> Z9{"grpDiv == null or BLANK?"}
    Z9 -- Yes --> Z10["Log CC_MAP_DATA_NULL_EXPTN_MSG + GRP_DIV"]
    Z10 --> Z11["Return false"]
    Z9 -- No --> Z12{"grpDiv == WRIB_ADD_JOKEN_STDARD_KEI (00)?"}
    Z12 -- No --> Z13["Log CC_MAP_DATA_FUSEI_EXPTN_MSG + GRP_DIV"]
    Z13 --> Z14["Return false"]

    Z12 -- Yes --> Z15["Get svcKeiList from ccMapSvcKeiGrp"]

    Z15 --> Z16{"svcKeiList == null?"}
    Z16 -- Yes --> Z17["Log CC_MAP_DATA_NULL_EXPTN_MSG + SVC_KEI_LIST"]
    Z17 --> Z18["Return false"]
    Z16 -- No --> Z19{"svcKeiList.size() <= 0?"}
    Z19 -- Yes --> Z20["Log CC_MAP_DATA_FUSEI_EXPTN_MSG + SVC_KEI_LIST"]
    Z20 --> Z21["Return false"]

    Z19 -- No --> Z22["FOR each ccMapSvcKei in svcKeiList"]

    Z22 --> Z23["Get tgKeiSkbtCd from ccMapSvcKei"]

    Z23 --> Z24{"tgKeiSkbtCd == null or BLANK?"}
    Z24 -- Yes --> Z25["Log CC_MAP_DATA_NULL_EXPTN_MSG + TG_KEI_SKBT_CD"]
    Z25 --> Z26["Return false"]
    Z24 -- No --> Z27{"tgKeiSkbtCd in valid codes?"}

    Z27 -- No --> Z28["Log CC_MAP_DATA_FUSEI_EXPTN_MSG + TG_KEI_SKBT_CD"]
    Z28 --> Z29["Return false"]

    Z27 -- Yes --> Z30["Get pcrsCd from ccMapSvcKei"]

    Z30 --> Z31{"pcrsCd == null or BLANK?"}
    Z31 -- Yes --> Z32["Log CC_MAP_DATA_NULL_EXPTN_MSG + PCRS_CD"]
    Z32 --> Z33["Return false"]
    Z31 -- No --> Z34["Get pplanCd from ccMapSvcKei"]

    Z34 --> Z35{"pplanCd == null or BLANK?"}
    Z35 -- Yes --> Z36["Log CC_MAP_DATA_NULL_EXPTN_MSG + PPLAN_CD"]
    Z36 --> Z37["Return false"]
    Z35 -- No --> Z38{tgKeiSkbtCd == 01 SVC_KEI?}

    Z38 -- Yes --> Z39["Get svcKeiNo, svcKeiStat, svcCd, prcGrpCd"]
    Z39 --> Z40{"all non-blank?"}
    Z40 -- No --> Z41["Return false"]
    Z40 -- Yes --> Z42[Continue]

    Z38 -- No --> Z43{tgKeiSkbtCd == 03 SVC_KEI_UCWK?}

    Z43 -- Yes --> Z44["Get svcKeiUcwkNo, svcKeiUcwkStat"]
    Z44 --> Z45{"all non-blank?"}
    Z45 -- No --> Z46["Return false"]
    Z45 -- Yes --> Z42

    Z43 -- No --> Z47{tgKeiSkbtCd == 04 OP_SVC_KEI?}

    Z47 -- Yes --> Z48["Get opSvcKeiNo, opSvcKeiStat, opSvcCd"]
    Z48 --> Z49{"all non-blank?"}
    Z49 -- No --> Z50["Return false"]
    Z49 -- Yes --> Z42

    Z47 -- No --> Z51{tgKeiSkbtCd == 05 SBOP_SVC_KEI?}

    Z51 -- Yes --> Z52["Get opSvcKeiNo, sbopSvcKeiNo, sbopSvcKeiStat, sbopSvcCd"]
    Z52 --> Z53{"all non-blank?"}
    Z53 -- No --> Z54["Return false"]
    Z53 -- Yes --> Z42

    Z51 -- No --> Z55{tgKeiSkbtCd == 06 KKTK_SVC_KEI?}

    Z55 -- Yes --> Z56["Get kktkSvcKeiNo, kktkSvcKeiStat, kktkSvcCd, kktkSbtCd"]
    Z56 --> Z57{"all non-blank?"}
    Z57 -- No --> Z58["Return false"]
    Z57 -- Yes --> Z42

    Z55 -- No --> Z59{tgKeiSkbtCd == 07 SEIOPSVC_KEI?}

    Z59 -- Yes --> Z60["Get seiopsvcKeiNo, seiopsvcKeiStat, seiopsvcCd"]
    Z60 --> Z61{"all non-blank?"}
    Z61 -- No --> Z62["Return false"]
    Z61 -- Yes --> Z42

    Z59 -- No --> Z63{tgKeiSkbtCd == 10 KKOP_SVC_KEI?}

    Z63 -- Yes --> Z64["Get kkopSvcKeiNo, kkopSvcKeiStat, kkopSvcCd"]
    Z64 --> Z65{"all non-blank?"}
    Z65 -- No --> Z66["Return false"]
    Z65 -- Yes --> Z42

    Z63 -- No --> Z42

    Z42 --> Z67["Next ccMapSvcKei"]
    Z67 --> Z22

    Z22 --> Z68["Next ccMapSvcKeiGrp"]
    Z68 --> Z7

    Z7 --> Z69["Return true"]

    Z69 --> END(["END"])
    B2 --> END
    D2 --> END
    E2 --> END
    F2 --> END
    H2 --> END
    J2 --> END
    K2 --> END
    M2 --> END
    O2 --> END
    Q2 --> END
    S3 --> END
    U3 --> END
    W3 --> END
    Y3 --> END
    Z3 --> END
    Z6 --> END
    Z11 --> END
    Z14 --> END
    Z18 --> END
    Z21 --> END
    Z26 --> END
    Z29 --> END
    Z33 --> END
    Z37 --> END
    Z41 --> END
    Z46 --> END
    Z50 --> END
    Z54 --> END
    Z58 --> END
    Z62 --> END
    Z66 --> END
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `ccMapNm` | `String` | The CC Map name key used to retrieve the work area HashMap from the common parameter object. It identifies which logical data section (e.g., the operation work map for KKSV0313) to validate. |
| 2 | `cmnParam` | `IRequestParameterReadWrite` | The business data acquisition interface object that holds all input parameters for the screen operation. Its `getData()` method retrieves the CC Map HashMap by the given key. |

**Instance fields / external state read:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `BLANK` | `String` | Empty string constant used as the null-equivalent blank value for field validation. |
| `CHK_ONLY_FUNC_CD` | `String` | Function code "2" — "Check-only" mode flag. |
| `CHK_ADD_FUNC_CD` | `String` | Function code "1" — "Check and Register" mode flag. |
| `ADD_CHGE_DIV_ARY` | `String[]` | Array of valid add/change division codes: "01" (Add), "02" (Plan Change), "03" (Termination), "04" (Recovery), "05" (Cancel), "06" (Course Change), "11" (Customer Merge), "12" (Customer Split), "13" (Billing Contract Merge), "14" (Billing Contract Split), "15" (Line Merge), "16" (STB), "17" (Construction Fee One-time Charge Removal). |
| `WRIB_ADD_JOKEN_CD_STDARD_KEI` | `String` | Group division code "00" — Standard Contract group type that all service contract groups must have. |
| `printlnEjbLog` | `void` (instance method) | Logging method called whenever a validation error is detected. |

## 4. CRUD Operations / Called Services

This method performs pure input validation with no database or entity reads/writes. All operations are in-memory HashMap lookups and list iterations.

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `cmnParam.getData(ccMapNm)` | - | - | Retrieves the CC Map HashMap from the request parameter interface by the given map name. |
| - | `ccMap.get(key)` | - | - | In-memory HashMap field extraction for each required field (funcCd, sysid, addChgeDiv, etc.). |
| - | `Arrays.asList(ADD_CHGE_DIV_ARY).contains(addChgeDiv)` | - | - | Validates add/change division code against the allowed codes array. |
| - | `printlnEjbLog(msg)` | - | - | Logs validation error messages to the EJB log. |
| - | `svcKeiGrpList.size()` | - | - | Checks that the service contract group list is non-empty. |
| - | `svcKeiList.size()` | - | - | Checks that each group contains at least one service contract record. |

**Note:** This method does not call any external SC (Service Component) or CBS (Business Service) methods. All validation is performed in-memory against the CC Map data structure populated by the preceding screen operation.

## 5. Dependency Trace

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

No screen/batch entry points found within 8 hops. Direct callers found: 1 method.

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Screen:KKSV0313 (via JKKWrisvcAutoAplyCC) | `JKKWrisvcAutoAplyCC.execute()` -> `chkCcMapInputData()` | `printlnEjbLog [-]` |

**Call chain details:**
The method is called directly from `JKKWrisvcAutoAplyCC.execute()`, which is the main business logic entry point for the Discount Service Auto-Application feature (KKSV0313 screen). The execute method prepares the CC Map data and then invokes chkCcMapInputData to validate it before proceeding with the auto-application processing. No screen entry point (KKSV class) is a direct caller — KKSV0313 calls the execute method which in turn delegates to this validation method.

**Terminal operations from this method:**
All terminal operations are logging calls (`printlnEjbLog`) used exclusively for error message output during validation failures. There are no database or external service terminal operations.

## 6. Per-Branch Detail Blocks

### Block 1 — IF (ccMap null check) (L7767)

Retrieves the CC Map from the parameter object. If null, logs the error and returns false.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `ccMap = (HashMap)cmnParam.getData(ccMapNm)` |
| 2 | IF | `ccMap == null` |
| 3 | CALL | `printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + ccMapNm)` |
| 4 | RETURN | `return false` |

### Block 2 — IF (funcCd null check) (L7774)

Extracts the function code from the CC Map. Null or blank indicates invalid input.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `funcCd = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.FUNC_CODE)` |
| 2 | IF | `funcCd == null || BLANK.equals(funcCd)` |
| 3 | CALL | `printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK.FUNC_CODE)` |
| 4 | RETURN | `return false` |

### Block 3 — ELSE IF (funcCd == "2" Check-only) (L7779)

When the function code is `CHK_ONLY_FUNC_CD = "2"`, skip all detailed validation.

| # | Type | Code |
|---|------|------|
| 1 | IF | `CHK_ONLY_FUNC_CD.equals(funcCd)` where `CHK_ONLY_FUNC_CD = "2"` |
| 2 | RETURN | `return true` (check-only mode, skip remaining checks) |

### Block 4 — ELSE IF (funcCd != "1" Invalid) (L7784)

If the function code is neither "1" nor "2", reject as invalid.

| # | Type | Code |
|---|------|------|
| 1 | IF | `!CHK_ADD_FUNC_CD.equals(funcCd)` where `CHK_ADD_FUNC_CD = "1"` |
| 2 | CALL | `printlnEjbLog(CC_MAP_DATA_FUSEI_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK.FUNC_CODE)` |
| 3 | RETURN | `return false` |

### Block 5 — IF (sysid null check) (L7792)

Validates that the system ID is present in the work area.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `sysid = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.SYSID)` |
| 2 | IF | `sysid == null || BLANK.equals(sysid)` |
| 3 | CALL | `printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK.SYSID)` |
| 4 | RETURN | `return false` |

### Block 6 — IF (addChgeDiv null check) (L7800)

Validates that the add/change division code is present.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `addChgeDiv = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV)` |
| 2 | IF | `addChgeDiv == null || BLANK.equals(addChgeDiv)` |
| 3 | CALL | `printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV)` |
| 4 | RETURN | `return false` |

### Block 7 — ELSE IF (addChgeDiv not in valid array) (L7806)

Validates that the add/change division code is one of the accepted values.

| # | Type | Code |
|---|------|------|
| 1 | IF | `!Arrays.asList(ADD_CHGE_DIV_ARY).contains(addChgeDiv)` |
| 2 | CALL | `printlnEjbLog(CC_MAP_DATA_FUSEI_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV)` |
| 3 | RETURN | `return false` |

**ADD_CHGE_DIV_ARY valid values:**
- "01" = Add (登録)
- "02" = Plan Change (プラン変更)
- "03" = Termination (解除)
- "04" = Recovery (回復)
- "05" = Cancel (キャンセル)
- "06" = Course Change (コース変更)
- "11" = Customer Merge (お客様併合)
- "12" = Customer Split (お客様分割)
- "13" = Billing Contract Merge (請求契約併合)
- "14" = Billing Contract Split (請求契約分割)
- "15" = Line Merge (回線併合)
- "16" = STB
- "17" = Construction Fee One-time Charge Removal (工事費割賦削除)

### Block 8 — IF (mskmNo null check) (L7815)

Validates the order number.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `mskmNo = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_NO)` |
| 2 | IF | `mskmNo == null || BLANK.equals(mskmNo)` |
| 3 | CALL | `printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK.MSKM_NO)` |
| 4 | RETURN | `return false` |

### Block 9 — IF (mskmSbtCd null check) (L7823)

Validates the order type code.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `mskmSbtCd = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_SBT_CD)` |
| 2 | IF | `mskmSbtCd == null || BLANK.equals(mskmSbtCd)` |
| 3 | CALL | `printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK.MSKM_SBT_CD)` |
| 4 | RETURN | `return false` |

### Block 10 — IF (idoDiv null check) (L7831)

Validates the movement division code.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `idoDiv = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.IDO_DIV)` |
| 2 | IF | `idoDiv == null || BLANK.equals(idoDiv)` |
| 3 | CALL | `printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK.IDO_DIV)` |
| 4 | RETURN | `return false` |

### Block 11 — IF (svcDlreCd conditional — Termination only) (L7840)

When the add/change division is "03" (Termination), the service termination reason code is required.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `svcDlreCd = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_DLRE_CD)` |
| 2 | IF | `ADD_CHGE_DIV_DSL.equals(addChgeDiv)` where `ADD_CHGE_DIV_DSL = "03"` |
| 3 | IF | `svcDlreCd == null || BLANK.equals(svcDlreCd)` |
| 4 | CALL | `printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK.SVC_DLRE_CD)` |
| 5 | RETURN | `return false` |

### Block 12 — IF (svcCancelRsnCd conditional — Cancel only) (L7854)

When the add/change division is "05" (Cancel), the service cancellation reason code is required.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `svcCancelRsnCd = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_CANCEL_RSN_CD)` |
| 2 | IF | `ADD_CHGE_DIV_CNCL.equals(addChgeDiv)` where `ADD_CHGE_DIV_CNCL = "05"` |
| 3 | IF | `svcCancelRsnCd == null || BLANK.equals(svcCancelRsnCd)` |
| 4 | CALL | `printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK.SVC_CANCEL_RSN_CD)` |
| 5 | RETURN | `return false` |

### Block 13 — IF (oldSysid conditional — Customer Merge/Split) (L7866)

v3.00.01 addition. When the add/change division is "11" (Customer Merge) or "12" (Customer Split), the old system ID is required.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `oldSysid = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.OLD_SYSID)` |
| 2 | IF | `ADD_CHGE_DIV_CUST_PLS.equals(addChgeDiv)` where `CUST_PLS = "11"` OR `ADD_CHGE_DIV_CUST_SLT.equals(addChgeDiv)` where `CUST_SLT = "12"` |
| 3 | IF | `oldSysid == null || BLANK.equals(oldSysid)` |
| 4 | CALL | `printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK.OLD_SYSID)` |
| 5 | RETURN | `return false` |

### Block 14 — IF (oldSeikyKeiNo conditional — Billing Merge/Split) (L7880)

v3.00.01 addition. When the add/change division is "13" (Billing Contract Merge) or "14" (Billing Contract Split), the old billing contract number is required.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `oldSeikyKeiNo = (String)ccMap.get(KKSV0313_KKSV0313OP_WORK.OLD_SEIKY_KEI_NO)` |
| 2 | IF | `ADD_CHGE_DIV_BILL_PLS.equals(addChgeDiv)` where `BILL_PLS = "13"` OR `ADD_CHGE_DIV_BILL_SLT.equals(addChgeDiv)` where `BILL_SLT = "14"` |
| 3 | IF | `oldSeikyKeiNo == null || BLANK.equals(oldSeikyKeiNo)` |
| 4 | CALL | `printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK.OLD_SEIKY_KEI_NO)` |
| 5 | RETURN | `return false` |

### Block 15 — IF (svcKeiGrpList null check) (L7895)

Retrieves the service contract group list. It must not be null.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `svcKeiGrpList = (ArrayList)ccMap.get(KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST)` |
| 2 | IF | `svcKeiGrpList == null` |
| 3 | CALL | `printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST)` |
| 4 | RETURN | `return false` |

### Block 16 — IF (svcKeiGrpList empty check) (L7901)

The service contract group list must contain at least one entry.

| # | Type | Code |
|---|------|------|
| 1 | IF | `svcKeiGrpList.size() <= 0` |
| 2 | CALL | `printlnEjbLog(CC_MAP_DATA_FUSEI_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST)` |
| 3 | RETURN | `return false` |

### Block 17 — FOR LOOP (svcKeiGrpList iteration) (L7906)

Iterates through each service contract group in the list.

| # | Type | Code |
|---|------|------|
| 1 | FOR | `for (HashMap ccMapSvcKeiGrp : svcKeiGrpList)` |

#### Block 17.1 — IF (grpDiv null check) (L7911)

Validates the group division code within each service contract group.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `grpDiv = (String)ccMapSvcKeiGrp.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.GRP_DIV)` |
| 2 | IF | `grpDiv == null || BLANK.equals(grpDiv)` |
| 3 | CALL | `printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.GRP_DIV)` |
| 4 | RETURN | `return false` |

#### Block 17.2 — IF (grpDiv invalid check) (L7917)

The group division must match the standard contract code "00".

| # | Type | Code |
|---|------|------|
| 1 | IF | `!WRIB_ADD_JOKEN_CD_STDARD_KEI.equals(grpDiv)` where `WRIB_ADD_JOKEN_CD_STDARD_KEI = "00"` |
| 2 | CALL | `printlnEjbLog(CC_MAP_DATA_FUSEI_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.GRP_DIV)` |
| 3 | RETURN | `return false` |

#### Block 17.3 — IF (svcKeiList null check) (L7926)

Retrieves the service contract list within each group. Must not be null.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `svcKeiList = (ArrayList)ccMapSvcKeiGrp.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST)` |
| 2 | IF | `svcKeiList == null` |
| 3 | CALL | `printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST)` |
| 4 | RETURN | `return false` |

#### Block 17.4 — IF (svcKeiList empty check) (L7932)

Each group must contain at least one service contract record.

| # | Type | Code |
|---|------|------|
| 1 | IF | `svcKeiList.size() <= 0` |
| 2 | CALL | `printlnEjbLog(CC_MAP_DATA_FUSEI_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST)` |
| 3 | RETURN | `return false` |

#### Block 17.5 — FOR LOOP (svcKeiList iteration) (L7938)

Iterates through each service contract record within the group.

| # | Type | Code |
|---|------|------|
| 1 | FOR | `for (HashMap ccMapSvcKei : svcKeiList)` |

##### Block 17.5.1 — IF (tgKeiSkbtCd null check) (L7943)

Validates the target contract identification code. Must not be null or blank.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `tgKeiSkbtCd = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.TG_KEI_SKBT_CD)` |
| 2 | IF | `tgKeiSkbtCd == null || BLANK.equals(tgKeiSkbtCd)` |
| 3 | CALL | `printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI.TG_KEI_SKBT_CD)` |
| 4 | RETURN | `return false` |

##### Block 17.5.2 — IF (tgKeiSkbtCd value validation) (L7948)

Nested validation of the target contract identification code against all accepted codes.

| # | Type | Code |
|---|------|------|
| 1 | IF | `!TG_KEI_SKBT_CD_SVC_KEI.equals(tgKeiSkbtCd)` (01) AND `!TG_KEI_SKBT_CD_SVC_KEI_UCWK.equals(tgKeiSkbtCd)` (03) |
| 2 | IF | `!TG_KEI_SKBT_CD_OP_SVC_KEI.equals(tgKeiSkbtCd)` (04) AND `!TG_KEI_SKBT_CD_SBOP_SVC_KEI.equals(tgKeiSkbtCd)` (05) |
| 3 | IF | `!TG_KEI_SKBT_CD_KKTK_SVC_KEI.equals(tgKeiSkbtCd)` (06) AND `!TG_KEI_SKBT_CD_SEIOPSVC_KEI.equals(tgKeiSkbtCd)` (07) |
| 4 | IF | `!TG_KEI_SKBT_CD_KKOP_SVC_KEI.equals(tgKeiSkbtCd)` (10) [ANK-1578-00-00 added] |
| 5 | CALL | `printlnEjbLog(CC_MAP_DATA_FUSEI_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI.TG_KEI_SKBT_CD)` |
| 6 | RETURN | `return false` |

**Valid tgKeiSkbtCd codes:**
- "01" = Service Contract (サービス契約)
- "03" = Service Contract Details (サービス契約内詳)
- "04" = Option Service Contract (オプションサービス契約)
- "05" = Sub-Option Service Contract (サブオプションサービス契約)
- "06" = Equipment Provision Service Contract (機器提供サービス契約)
- "07" = Billing Option Service Contract (請求オプションサービス契約)
- "10" = Equipment Option Service Contract (機器オプションサービス契約) [ANK-1578-00-00]

##### Block 17.5.3 — IF (tgKeiSkbtCd == "01" Service Contract specific) (L7969)

When the target contract type is Service Contract, additional fields must be validated.

| # | Type | Code |
|---|------|------|
| 1 | IF | `TG_KEI_SKBT_CD_SVC_KEI.equals(tgKeiSkbtCd)` where `= "01"` |
| 2 | EXEC | `svcKeiNo = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_NO)` |
| 3 | IF | `svcKeiNo == null || BLANK.equals(svcKeiNo)` |
| 4 | CALL | `printlnEjbLog(...)` |
| 5 | RETURN | `return false` |
| 6 | EXEC | `svcKeiStat = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_STAT)` |
| 7 | IF | `svcKeiStat == null || BLANK.equals(svcKeiStat)` |
| 8 | RETURN | `return false` |
| 9 | EXEC | `svcCd = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_CD)` |
| 10 | IF | `svcCd == null || BLANK.equals(svcCd)` |
| 11 | RETURN | `return false` |
| 12 | EXEC | `prcGrpCd = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.PRC_GRP_CD)` |
| 13 | IF | `prcGrpCd == null || BLANK.equals(prcGrpCd)` |
| 14 | RETURN | `return false` |

##### Block 17.5.4 — FIELD CHECK (pcrsCd — always required) (L7998)

The price course code is required for ALL service contract types.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `pcrsCd = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.PCRS_CD)` |
| 2 | IF | `pcrsCd == null || BLANK.equals(pcrsCd)` |
| 3 | CALL | `printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI.PCRS_CD)` |
| 4 | RETURN | `return false` |

##### Block 17.5.5 — FIELD CHECK (pplanCd — always required) (L8009)

The price plan code is required for ALL service contract types.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `pplanCd = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.PPLAN_CD)` |
| 2 | IF | `pplanCd == null || BLANK.equals(pplanCd)` |
| 3 | CALL | `printlnEjbLog(CC_MAP_DATA_NULL_EXPTN_MSG + KKSV0313_KKSV0313OP_WORK_SVC_KEI.PPLAN_CD)` |
| 4 | RETURN | `return false` |

##### Block 17.5.6 — IF (tgKeiSkbtCd == "03" Service Contract Details specific) (L8020)

When the target contract type is Service Contract Details, the details-specific fields must be validated.

| # | Type | Code |
|---|------|------|
| 1 | IF | `TG_KEI_SKBT_CD_SVC_KEI_UCWK.equals(tgKeiSkbtCd)` where `= "03"` |
| 2 | EXEC | `svcKeiUcwkNo = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_UCWK_NO)` |
| 3 | IF | `svcKeiUcwkNo == null || BLANK.equals(svcKeiUcwkNo)` |
| 4 | RETURN | `return false` |
| 5 | EXEC | `svcKeiUcwkStat = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SVC_KEI_UCWK_STAT)` |
| 6 | IF | `svcKeiUcwkStat == null || BLANK.equals(svcKeiUcwkStat)` |
| 7 | RETURN | `return false` |

##### Block 17.5.7 — IF (tgKeiSkbtCd == "04" Option Service Contract specific) (L8034)

When the target contract type is Option Service Contract, the option-specific fields must be validated.

| # | Type | Code |
|---|------|------|
| 1 | IF | `TG_KEI_SKBT_CD_OP_SVC_KEI.equals(tgKeiSkbtCd)` where `= "04"` |
| 2 | EXEC | `opSvcKeiNo = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.OP_SVC_KEI_NO)` |
| 3 | IF | `opSvcKeiNo == null || BLANK.equals(opSvcKeiNo)` |
| 4 | RETURN | `return false` |
| 5 | EXEC | `opSvcKeiStat = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.OP_SVC_KEI_STAT)` |
| 6 | IF | `opSvcKeiStat == null || BLANK.equals(opSvcKeiStat)` |
| 7 | RETURN | `return false` |
| 8 | EXEC | `opSvcCd = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.OP_SVC_CD)` |
| 9 | IF | `opSvcCd == null || BLANK.equals(opSvcCd)` |
| 10 | RETURN | `return false` |

##### Block 17.5.8 — IF (tgKeiSkbtCd == "05" Sub-Option Service Contract specific) (L8060)

When the target contract type is Sub-Option Service Contract, the sub-option-specific fields must be validated.

| # | Type | Code |
|---|------|------|
| 1 | IF | `TG_KEI_SKBT_CD_SBOP_SVC_KEI.equals(tgKeiSkbtCd)` where `= "05"` |
| 2 | EXEC | `opSvcKeiNo = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.OP_SVC_KEI_NO)` (v3.00.00 added) |
| 3 | IF | `opSvcKeiNo == null || BLANK.equals(opSvcKeiNo)` |
| 4 | RETURN | `return false` |
| 5 | EXEC | `sbopSvcKeiNo = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SBOP_SVC_KEI_NO)` |
| 6 | IF | `sbopSvcKeiNo == null || BLANK.equals(sbopSvcKeiNo)` |
| 7 | RETURN | `return false` |
| 8 | EXEC | `sbopSvcKeiStat = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SBOP_SVC_KEI_STAT)` |
| 9 | IF | `sbopSvcKeiStat == null || BLANK.equals(sbopSvcKeiStat)` |
| 10 | RETURN | `return false` |
| 11 | EXEC | `sbopSvcCd = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SBOP_SVC_CD)` |
| 12 | IF | `sbopSvcCd == null || BLANK.equals(sbopSvcCd)` |
| 13 | RETURN | `return false` |

##### Block 17.5.9 — IF (tgKeiSkbtCd == "06" Equipment Provision Service Contract specific) (L8094)

When the target contract type is Equipment Provision Service Contract, the equipment-specific fields must be validated.

| # | Type | Code |
|---|------|------|
| 1 | IF | `TG_KEI_SKBT_CD_KKTK_SVC_KEI.equals(tgKeiSkbtCd)` where `= "06"` |
| 2 | EXEC | `kktkSvcKeiNo = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKTK_SVC_KEI_NO)` |
| 3 | IF | `kktkSvcKeiNo == null || BLANK.equals(kktkSvcKeiNo)` |
| 4 | RETURN | `return false` |
| 5 | EXEC | `kktkSvcKeiStat = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKTK_SVC_KEI_STAT)` |
| 6 | IF | `kktkSvcKeiStat == null || BLANK.equals(kktkSvcKeiStat)` |
| 7 | RETURN | `return false` |
| 8 | EXEC | `kktkSvcCd = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKTK_SVC_CD)` |
| 9 | IF | `kktkSvcCd == null || BLANK.equals(kktkSvcCd)` |
| 10 | RETURN | `return false` |
| 11 | EXEC | `kktkSbtCd = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKTK_SBT_CD)` |
| 12 | IF | `kktkSbtCd == null || BLANK.equals(kktkSbtCd)` |
| 13 | RETURN | `return false` |

##### Block 17.5.10 — IF (tgKeiSkbtCd == "07" Billing Option Service Contract specific) (L8130)

When the target contract type is Billing Option Service Contract, the billing option-specific fields must be validated.

| # | Type | Code |
|---|------|------|
| 1 | IF | `TG_KEI_SKBT_CD_SEIOPSVC_KEI.equals(tgKeiSkbtCd)` where `= "07"` |
| 2 | EXEC | `seiopsvcKeiNo = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SEIOPSVC_KEI_NO)` |
| 3 | IF | `seiopsvcKeiNo == null || BLANK.equals(seiopsvcKeiNo)` |
| 4 | RETURN | `return false` |
| 5 | EXEC | `seiopsvcKeiStat = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SEIOPSVC_KEI_STAT)` |
| 6 | IF | `seiopsvcKeiStat == null || BLANK.equals(seiopsvcKeiStat)` |
| 7 | RETURN | `return false` |
| 8 | EXEC | `seiopsvcCd = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.SEIOPSVC_CD)` |
| 9 | IF | `seiopsvcCd == null || BLANK.equals(seiopsvcCd)` |
| 10 | RETURN | `return false` |

##### Block 17.5.11 — IF (tgKeiSkbtCd == "10" Equipment Option Service Contract specific — ANK-1578-00-00) (L8158)

v7.00.00 addition. When the target contract type is Equipment Option Service Contract, the equipment option-specific fields must be validated.

| # | Type | Code |
|---|------|------|
| 1 | IF | `TG_KEI_SKBT_CD_KKOP_SVC_KEI.equals(tgKeiSkbtCd)` where `= "10"` [ANK-1578-00-00] |
| 2 | EXEC | `kkopSvcKeiNo = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKOP_SVC_KEI_NO)` |
| 3 | IF | `kkopSvcKeiNo == null || BLANK.equals(kkopSvcKeiNo)` |
| 4 | RETURN | `return false` |
| 5 | EXEC | `kkopSvcKeiStat = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKOP_SVC_KEI_STAT)` |
| 6 | IF | `kkopSvcKeiStat == null || BLANK.equals(kkopSvcKeiStat)` |
| 7 | RETURN | `return false` |
| 8 | EXEC | `kkopSvcCd = (String)ccMapSvcKei.get(KKSV0313_KKSV0313OP_WORK_SVC_KEI.KKOP_SVC_CD)` |
| 9 | IF | `kkopSvcCd == null || BLANK.equals(kkopSvcCd)` |
| 10 | RETURN | `return false` |

### Block 18 — RETURN (success) (L8200)

All validations passed — return true to indicate valid input data.

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

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `ccMap` | Field | CC Map (Work Area) — a HashMap container holding all operation-level business data for KKSV0313 |
| `ccMapNm` | Field | CC Map name — the key used to retrieve the work area HashMap from the common parameter object |
| `funcCd` | Field | Function code — operation mode indicator: "1" = Check and Register, "2" = Check-only |
| `sysid` | Field | SYSID — internal system identifier for the service contract line item |
| `addChgeDiv` | Field | Add/Change division — classifies the type of operation being performed (add, change, terminate, cancel, etc.) |
| `mskmNo` | Field | Order number (申込番号) — the unique identifier for the service order |
| `mskmSbtCd` | Field | Order type code (申込種類コード) — classifies the type of order submission |
| `idoDiv` | Field | Movement division (異動区分) — indicates the direction or type of service change movement |
| `svcDlreCd` | Field | Service termination reason code (サービス解約理由コード) — explains why a service is being terminated |
| `svcCancelRsnCd` | Field | Service cancellation reason code (サービスキャンセル理由コード) — explains why a service is being cancelled |
| `oldSysid` | Field | Old SYSID — the previous system ID before a customer merge or split operation |
| `oldSeikyKeiNo` | Field | Old billing contract number (旧請求契約番号) — the previous billing contract number before a merge or split |
| `svcKeiGrpList` | Field | Service contract group list — a nested ArrayList of HashMaps, each representing a service contract group |
| `grpDiv` | Field | Group division (グループ区分) — classifies the type of service contract group |
| `svcKeiList` | Field | Service contract list — nested ArrayList of HashMaps containing individual service contract records |
| `tgKeiSkbtCd` | Field | Target contract identification code (対象契約識別コード) — identifies the type of service contract |
| `svcKeiNo` | Field | Service contract number (サービス契約番号) — unique identifier for a service contract |
| `svcKeiStat` | Field | Service contract status (サービス契約ステータス) — current state of the service contract |
| `svcCd` | Field | Service code (サービスコード) — identifies the type of telecom service |
| `prcGrpCd` | Field | Price group code (料金グループコード) — groups pricing for the service contract |
| `pcrsCd` | Field | Price course code (料金コースコード) — identifies the pricing plan/course for the service |
| `pplanCd` | Field | Price plan code (料金プランコード) — identifies the specific pricing plan for the service |
| `svcKeiUcwkNo` | Field | Service contract details number (サービス契約内詳番号) — sub-detail identifier within a service contract |
| `svcKeiUcwkStat` | Field | Service contract details status (サービス契約内詳ステータス) — status of the service contract details |
| `opSvcKeiNo` | Field | Option service contract number (オプションサービス契約番号) — number for an optional add-on service |
| `opSvcKeiStat` | Field | Option service contract status (オプションサービス契約ステータス) — status of the option service |
| `opSvcCd` | Field | Option service code (オプションサービスコード) — code identifying the option service type |
| `sbopSvcKeiNo` | Field | Sub-option service contract number (サブオプションサービス契約番号) — number for a sub-optional service |
| `sbopSvcKeiStat` | Field | Sub-option service contract status (サブオプションサービス契約ステータス) — status of the sub-option |
| `sbopSvcCd` | Field | Sub-option service code (サブオプションサービスコード) — code for the sub-option service type |
| `kktkSvcKeiNo` | Field | Equipment provision service contract number (機器提供サービス契約番号) — number for equipment rental/lease service |
| `kktkSvcKeiStat` | Field | Equipment provision service contract status (機器提供サービス契約ステータス) — status of equipment provision |
| `kktkSvcCd` | Field | Equipment provision service code (機器提供サービスコード) — code for the equipment service type |
| `kktkSbtCd` | Field | Equipment provision type code (機器提供種類コード) — classifies the type of equipment provision |
| `seiopsvcKeiNo` | Field | Billing option service contract number (請求オプションサービス契約番号) — number for billing-related optional service |
| `seiopsvcKeiStat` | Field | Billing option service contract status (請求オプションサービス契約ステータス) — status of billing option |
| `seiopsvcCd` | Field | Billing option service code (請求オプションサービスコード) — code for billing option service type |
| `kkopSvcKeiNo` | Field | Equipment option service contract number (機器オプションサービス契約番号) — number for equipment-related optional service |
| `kkopSvcKeiStat` | Field | Equipment option service contract status (機器オプションサービス契約ステータス) — status of equipment option |
| `kkopSvcCd` | Field | Equipment option service code (機器オプションサービスコード) — code for equipment option service type |
| `CHK_ONLY_FUNC_CD` | Constant | Function code "2" — Check-only mode (チェックのみ) |
| `CHK_ADD_FUNC_CD` | Constant | Function code "1" — Check and Register mode (チェック＆登録) |
| `ADD_CHGE_DIV_ADD` | Constant | "01" — Registration/Add (登録) |
| `ADD_CHGE_DIV_PLAN_CHG` | Constant | "02" — Plan Change (プラン変更) |
| `ADD_CHGE_DIV_DSL` | Constant | "03" — Termination (解除) |
| `ADD_CHGE_DIV_KAIHK` | Constant | "04" — Recovery (回復) |
| `ADD_CHGE_DIV_CNCL` | Constant | "05" — Cancel (キャンセル) |
| `ADD_CHGE_DIV_CRS_CHG` | Constant | "06" — Course Change (コース変更) |
| `ADD_CHGE_DIV_CUST_PLS` | Constant | "11" — Customer Merge (お客様併合) |
| `ADD_CHGE_DIV_CUST_SLT` | Constant | "12" — Customer Split (お客様分割) |
| `ADD_CHGE_DIV_BILL_PLS` | Constant | "13" — Billing Contract Merge (請求契約併合) |
| `ADD_CHGE_DIV_BILL_SLT` | Constant | "14" — Billing Contract Split (請求契約分割) |
| `ADD_CHGE_DIV_LINE_PLS` | Constant | "15" — Line Merge (回線併合) |
| `ADD_CHGE_DIV_STB` | Constant | "16" — STB (Set-Top Box) |
| `ADD_CHGE_DIV_KOJIHI_KAP_CP_DEL` | Constant | "17" — Construction Fee One-time Charge Removal (工事費割賦削除) |
| `WRIB_ADD_JOKEN_CD_STDARD_KEI` | Constant | "00" — Standard Contract group division (標準契約) |
| `TG_KEI_SKBT_CD_SVC_KEI` | Constant | "01" — Service Contract (サービス契約) |
| `TG_KEI_SKBT_CD_SVC_KEI_UCWK` | Constant | "03" — Service Contract Details (サービス契約内詳) |
| `TG_KEI_SKBT_CD_OP_SVC_KEI` | Constant | "04" — Option Service Contract (オプションサービス契約) |
| `TG_KEI_SKBT_CD_SBOP_SVC_KEI` | Constant | "05" — Sub-Option Service Contract (サブオプションサービス契約) |
| `TG_KEI_SKBT_CD_KKTK_SVC_KEI` | Constant | "06" — Equipment Provision Service Contract (機器提供サービス契約) |
| `TG_KEI_SKBT_CD_SEIOPSVC_KEI` | Constant | "07" — Billing Option Service Contract (請求オプションサービス契約) |
| `TG_KEI_SKBT_CD_KKOP_SVC_KEI` | Constant | "10" — Equipment Option Service Contract (機器オプションサービス契約) |
| `BLANK` | Constant | Empty string "" used as null-equivalent blank check |
| KKSV0313 | Screen | Discount Service Auto-Application screen (割引サービス自動適用画面) |
| CC Map | Domain | Work area HashMap — shared data container passed between CC (Component Controller) methods |
| WRIB | Acronym | Discount/Price reduction (割引) — appears in constants and field names |
| SVC_KEI | Acronym | Service contract (サービス契約) — telecom service line item |
| MSKM | Acronym | Order submission (申込) — customer order request |
| SEI | Acronym | Billing (請求) — invoice/billing contract |
| KKTK | Acronym | Equipment provision (機器提供) — hardware/equipment rental service |
| KKOP | Acronym | Equipment option (機器オプション) — optional equipment-related service |
| K-Opticom | Company | K-Opticom Co., Ltd. — Japanese telecommunications service provider (parent company) |
