# Business Logic — KKW02519SFLogic.actionInitUpdTran() [286 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKW02519SF.KKW02519SFLogic` |
| Layer | Controller / Web Logic (UI transection handling layer) |
| Module | `KKW02519SF` (Package: `eo.web.webview.KKW02519SF`) |

## 1. Role

### KKW02519SFLogic.actionInitUpdTran()

This method performs the initial display processing for the Telephone Optional Service Contract Update screen (KKW02519) and its update confirmation screen (KKW02520) — specifically for direct-transition scenarios. It prepares all form data required for editing telephone optional service contracts, which are add-on services linked to a primary service agreement in K-Opticom's telecom billing system. The method operates as a **routing/dispatch pattern**: it maps input form beans to service-level contracts, invokes the KKSV0369 service chain to load contract data across 16 agreement types (service contract, optional service, sub-optional service, customer agreement, billing, etc.), retrieves the results back into the form bean, and then conditionally branches based on whether a sub-optional service exists and what operation type is being performed (regular update, recovery/kaihk, or reservation cancel/rsv_cl). It also applies screen-id-specific logic — when the target is KKW02520 (update confirmation) and the operation is recovery or reservation cancel, it formats service end dates for display. Finally, it sets promotion/discount error flags and future pack existence flags that drive UI behavior on the update screen.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["actionInitUpdTran(svcFormBean, screenId, tDiv)"])
    START --> GET_UNYO_YMD["Get unyo_ymd via JCCWebCommon.getOpeDate"]
    GET_UNYO_YMD --> SET_UNYO_YMD["Set UNYO_YMD on svcFormBean (substring 0-8)"]

    SET_UNYO_YMD --> GET_UNYO_DTM["Get unyo_ymd_tm via JCCWebCommon.getOpeDateTimeStamp"]
    GET_UNYO_DTM --> SET_UNYO_DTM["Set UNYO_DTM on svcFormBean"]

    SET_UNYO_DTM --> CREATE_MAPS["Create paramMap, inputMap, outputMap HashMaps"]
    CREATE_MAPS --> SET_TELEGRAM["Set UCID=KKSV0369, OPID=KKSV0369OP in paramMap"]

    SET_TELEGRAM --> CREATE_MAPPER["Create KKSV0369_KKSV0369OPDBMapper"]
    CREATE_MAPPER --> SET_036901["mapper.setKKSV036901SC - Service Contract Agreement"]
    SET_036901 --> SET_036902["mapper.setKKSV036902SC - Optional Service Contract Agreement"]
    SET_036902 --> SET_036903["mapper.setKKSV036903SC - Sub-Optional Service Contract Agreement"]
    SET_036903 --> SET_036904["mapper.setKKSV036904SC - Sub-Optional Service Contract Agreement (FUNC_CD_1)"]
    SET_036904 --> SET_036905["mapper.setKKSV036905SC - Optional Service Agreement"]
    SET_036905 --> SET_036906["mapper.setKKSV036906SC - Customer Agreement"]
    SET_036906 --> SET_036907["mapper.setKKSV036907SC - Service Contract Details Agreement"]
    SET_036907 --> SET_036908["mapper.setKKSV036908SC - Optional Service Contract (Tel) Agreement"]
    SET_036908 --> SET_036909["mapper.setKKSV036909SC - Business Parameter Management (Upper Limit)"]
    SET_036909 --> SET_036910["mapper.setKKSV036910SC - Business Parameter Management (Lower Limit)"]
    SET_036910 --> SET_036911["mapper.setKKSV036911SC - Billing First View Agreement"]
    SET_036911 --> SET_036913["mapper.setKKSV036913SC - Tel Optional Service Contract View (with tranDiv)"]
    SET_036913 --> SET_036914["mapper.setKKSV036914CC - Tel Selection Optional Package Item CC"]
    SET_036914 --> SET_036919["mapper.setKKSV036919SC - Abnormal Reservation View"]
    SET_036919 --> SET_036920["mapper.setKKSV036920SC - Service Target Machine Service Contract View"]

    SET_036920 --> INVOKE["invokeService(paramMap, inputMap, outputMap)"]
    INVOKE --> GET_036901["mapper.getKKSV036901SC - Read output"]
    GET_036901 --> GET_036902["mapper.getKKSV036902SC - Read output"]
    GET_036902 --> GET_036903["mapper.getKKSV036903SC - Read output"]
    GET_036903 --> GET_036904["mapper.getKKSV036904SC - Read output"]
    GET_036904 --> GET_036905["mapper.getKKSV036905SC - Read output"]
    GET_036905 --> GET_036906["mapper.getKKSV036906SC - Read output"]
    GET_036906 --> GET_036907["mapper.getKKSV036907SC - Read output"]
    GET_036907 --> GET_036908["mapper.getKKSV036908SC - Read output"]
    GET_036908 --> GET_036909["mapper.getKKSV036909SC - Read output"]
    GET_036909 --> GET_036910["mapper.getKKSV036910SC - Read output"]
    GET_036910 --> GET_036911["mapper.getKKSV036911SC - Read output"]
    GET_036911 --> GET_036913["mapper.getKKSV036913SC - Read output"]
    GET_036913 --> GET_036915["mapper.getKKSV036915SC - Read output"]
    GET_036915 --> GET_036917["mapper.getKKSV036917CC - Read output"]
    GET_036917 --> GET_036920_R["mapper.getKKSV036920SC - Read output"]

    GET_036920_R --> EXTRACT_SVC_MAP["Extract svcKeiMap from outputMap KKSV036917CC"]

    EXTRACT_SVC_MAP --> CHK_SVC_NULL{svcKeiMap != null?}
    CHK_SVC_NULL -->|yes| GET_OTOKU["Get otoku_chk_err_flg from svcKeiMap"]
    CHK_SVC_NULL -->|no| OTOKU_DEFAULT["Set otoku_chk_err_flg = 0 (default)"]
    GET_OTOKU --> SET_OTOKU["Set OTOKU_CHK_ERR_FLG on svcFormBean"]
    OTOKU_DEFAULT --> SET_OTOKU

    SET_OTOKU --> GET_PACK["Get pack_mirai_flg from svcKeiMap (default 0)"]
    GET_PACK --> SET_PACK["Set PACK_MIRAI_FLG on svcFormBean"]

    SET_PACK --> GET_SEIKY["Get KAKIN_LIST bean array, first bean"]
    GET_SEIKY --> GET_SEIKY_NO["Get SEIKY_KEI_NO_15 from first bean, set SEIKY_KEI_NO on svcFormBean"]

    GET_SEIKY_NO --> GET_SBOP["Get SBOP_SVC_KEI_NO from svcFormBean"]
    GET_SBOP --> GET_TEL_LIST["Get TEL_OP_SVC_KEI_LIST bean array, first bean"]
    GET_TEL_LIST --> SET_USE_END_DATE["Set USE_END_YMD year/month/day on telOpSvcKei"]

    SET_USE_END_DATE --> GET_OP_LIST["Get OP_SVC_KEI_LIST bean array, first bean"]
    GET_OP_LIST --> GET_OP_SVC_CD["Get OP_SVC_CD_05 from opSvcKei"]

    GET_OP_SVC_CD --> GET_UPD_DTM["Get EKK0081A010CBSMsg1List, set UPD_DTM on svcFormBean"]

    GET_UPD_DTM --> CHK_SBOP{sbopSveKeiNo null or empty?}
    CHK_SBOP -->|yes - No sub-opt| BLK_NEW["Block: No sub-optional service (new contract)"]
    CHK_SBOP -->|no - Has sub-opt| BLK_EXIST["Block: Has sub-optional service (existing contract)"]

    BLK_NEW --> NEW_COPY_OPCD["Copy OP_SVC_CD_05 to telOpSvcKei OP_CD_01"]
    NEW_COPY_OPCD --> NEW_COPY_OPNM["Copy OP_SVC_CD_NM_05 to telOpSvcKei OP_NM_01"]

    NEW_COPY_OPNM --> CHK_TWRYO{opSvcCd == B072?}
    CHK_TWRYO -->|yes - TWRYO STIAM| TWRYO_PROC["Get TWRYO_STIAM_TTU_TCHI_STIAM_12, divide by 1000, set USE_TW_STIAM_01"]
    CHK_TWRYO -->|no| NEW_FORMAT_START["Format svcStaYmd to YYYY/MM/DD, set USE_STA_YMD_01"]

    TWRYO_PROC --> NEW_FORMAT_START

    NEW_FORMAT_START --> CHK_SCREEN_1{screenId == KKW02520 AND tDiv == 05 or 06?}
    CHK_SCREEN_1 -->|yes| NEW_FORMAT_END["Format svcEndYmd to YYYY/MM/DD (clear if MAX_YMD), set USE_END_YMD_01"]
    CHK_SCREEN_1 -->|no| BLK_END_1["End new contract branch"]

    BLK_EXIST --> EXIST_COPY_OPCD["Copy SBOP_SVC_CD_06 to telOpSvcKei OP_CD_01"]
    EXIST_COPY_OPCD --> EXIST_COPY_OPNM["Copy SBOP_SVC_CD_NM_06 to telOpSvcKei OP_NM_01"]

    EXIST_COPY_OPNM --> EXIST_FORMAT_START["Format svcStaYmd to YYYY/MM/DD, set USE_STA_YMD_01"]

    EXIST_FORMAT_START --> CHK_SCREEN_2{screenId == KKW02520 AND tDiv == 05 or 06?}
    CHK_SCREEN_2 -->|yes| EXIST_FORMAT_END["Format svcEndYmd to YYYY/MM/DD (clear if MAX_YMD), set USE_END_YMD_01"]
    CHK_SCREEN_2 -->|no| BLK_END_2["End existing contract branch"]

    BLK_END_1 --> CHK_KAIHK{tDiv == 05?}
    BLK_END_2 --> CHK_KAIHK

    CHK_KAIHK -->|yes - Recovery| BLK_RECOVERY["Block: Recovery processing"]
    CHK_KAIHK -->|no| CHK_RSV_CL{tDiv == 06?}

    CHK_RSV_CL -->|yes - Reservation Cancel| BLK_CANCEL["Block: Reservation Cancel processing"]
    CHK_RSV_CL -->|no| END_NODE(["Return void"])

    BLK_RECOVERY --> RECOVERY_OTOKU["checkOtokuChkResult(paramBean, outputMap)"]
    RECOVERY_OTOKU --> RECOVERY_MSG["setMessageInfo: Telephone Optional Service Contract Recovery"]
    RECOVERY_MSG --> END_NODE

    BLK_CANCEL --> CANCEL_OTOKU["checkOtokuChkResult(paramBean, outputMap)"]
    CANCEL_OTOKU --> CANCEL_MSG["setMessageInfo: Telephone Optional Service Contract Reservation Cancel"]
    CANCEL_MSG --> END_NODE
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `svcFormBean` | `X31SDataBeanAccess` | The service form data bean — carries all screen-level data fields for the Telephone Optional Service Contract Update screen. Used as both input (reading contract numbers, operation codes) and output (writing dates, flags, error indicators). Contains nested bean arrays for service contracts, optional services, billing data, and customer agreements. |
| 2 | `screenId` | `String` | The screen identifier indicating which UI screen triggered this method. Primarily used to differentiate between KKW02519 (update screen) and KKW02520 (update confirmation screen). When KKW02520 is specified, additional service end date formatting logic is applied. Resolved constant: `SCREEN_ID_KKW02520 = "KKW02520"` (Update Confirmation). |
| 3 | `tDiv` | `String` | The operation transaction division code — determines the business operation being performed. Values: `"05"` (Recovery / Kaihk — restoring a previously canceled service), `"06"` (Reservation Cancel / RsvCl — canceling a reserved service). When either value is set, promotion/discount validation (`checkOtokuChkResult`) is triggered and a specific confirmation message is set. The instance field `tranDiv` (passed from caller) provides the actual value. |

**Instance fields read:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `tranDiv` | `String` | The transaction division string (defaults to `""`). Passed to `mapper.setKKSV036913SC` and used internally as the `tDiv` parameter in the caller. Represents the operation type context. |

## 4. CRUD Operations / Called Services

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `JCCWebCommon.getOpeDate` | - | - | Reads the current operational date (YYYYMMDD format) for setting the operation date field on the form bean. |
| R | `JCCWebCommon.getOpeDateTimeStamp` | - | - | Reads the current operational date-time stamp (YYYYMMDDHHmmssSSS) for setting the operation date-time field on the form bean. |
| R | `KKSV0369_KKSV0369OPDBMapper.setKKSV036901SC` | EKK0081A010SC | KK_T_SVC_KEI (Service Contract) | Maps service contract agreement data from the form bean into the input map for service invocation. Read/Map. |
| R | `KKSV0369_KKSV0369OPDBMapper.setKKSV036902SC` | EKK0081A020SC | KK_T_OP_SVC_KEI (Optional Service Contract) | Maps optional service contract agreement data. Read/Map. |
| R | `KKSV0369_KKSV0369OPDBMapper.setKKSV036903SC` | EKK0081A030SC | KK_T_SBOP_SVC_KEI (Sub-Optional Service Contract) | Maps sub-optional service contract agreement data. Read/Map. |
| R | `KKSV0369_KKSV0369OPDBMapper.setKKSV036904SC` | EKK0081A040SC | KK_T_SBOP_SVC_KEI (Sub-Optional Service Contract) | Maps sub-optional service contract agreement data (FUNC_CD_1 variant). Read/Map. |
| R | `KKSV0369_KKSV0369OPDBMapper.setKKSV036905SC` | EKK0081A050SC | KK_T_OP_SVC (Optional Service Agreement) | Maps optional service agreement data. Read/Map. |
| R | `KKSV0369_KKSV0369OPDBMapper.setKKSV036906SC` | EKK0081A060SC | KK_T_CUST (Customer Agreement) | Maps customer agreement data. Read/Map. |
| R | `KKSV0369_KKSV0369OPDBMapper.setKKSV036907SC` | EKK0081A070SC | KK_T_SVC_KEI_UCWK (Service Contract Details) | Maps service contract details agreement data. Read/Map. |
| R | `KKSV0369_KKSV0369OPDBMapper.setKKSV036908SC` | EKK0081A080SC | KK_T_OP_SVC_TEL (Optional Service Contract - Telephone) | Maps telephone optional service contract agreement data. Read/Map. |
| R | `KKSV0369_KKSV0369OPDBMapper.setKKSV036909SC` | EKK0321A010SC | KK_T_CHI_STIAM_MAX (Notification Upper Limit) | Maps business parameter management upper limit data. Read/Map. |
| R | `KKSV0369_KKSV0369OPDBMapper.setKKSV036910SC` | EKK0321A010SC | KK_T_CHI_STIAM_MIN (Notification Lower Limit) | Maps business parameter management lower limit data. Read/Map. |
| R | `KKSV0369_KKSV0369OPDBMapper.setKKSV036911SC` | EKK0369A010SC | KK_T_SEIKY_KEI (Billing Contract) | Maps billing first view agreement data. Read/Map. |
| R | `KKSV0369_KKSV0369OPDBMapper.setKKSV036913SC` | EKK0369A030SC | KK_T_TEL_OP_SVC_KEI (Tel Optional Service Contract) | Maps telephone optional service contract list view data with transaction division. Read/Map. |
| R | `KKSV0369_KKSV0369OPDBMapper.setKKSV036914CC` | EKK0369C010CC | - | Maps telephone selection optional package item control code data. Read/Map. |
| R | `KKSV0369_KKSV0369OPDBMapper.setKKSV036919SC` | EKK0081A019SC | KK_T_IDO_RSV (Abnormal Reservation) | Maps abnormal reservation view data. Read/Map. |
| R | `KKSV0369_KKSV0369OPDBMapper.setKKSV036920SC` | EKK0081A020SC | KK_T_SVC_TGT_KI (Service Target Machine) | Maps service target machine service contract view data. Read/Map. |
| C/R/U | `JCCBatCommon.invokeService` | - | Multiple (see KKSV0369 SCs) | Invokes the entire KKSV0369 service chain. This is the core service dispatch that performs the actual CRUD operations across all mapped service components. |
| R | `KKSV0369_KKSV0369OPDBMapper.getKKSV036901SC` | EKK0081A010SC | KK_T_SVC_KEI (Service Contract) | Retrieves service contract data from output map. Read from EKK0081A010CBS (last_upd_dtm extracted). |
| R | `KKSV0369_KKSV0369OPDBMapper.getKKSV036902SC` | EKK0081A020SC | KK_T_OP_SVC_KEI (Optional Service Contract) | Retrieves optional service contract data from output map. Read. |
| R | `KKSV0369_KKSV0369OPDBMapper.getKKSV036903SC` | EKK0081A030SC | KK_T_SBOP_SVC_KEI (Sub-Optional Service Contract) | Retrieves sub-optional service contract data from output map. Read. |
| R | `KKSV0369_KKSV0369OPDBMapper.getKKSV036904SC` | EKK0081A040SC | KK_T_SBOP_SVC_KEI (Sub-Optional Service Contract) | Retrieves sub-optional service contract data (FUNC_CD_1 variant). Read. |
| R | `KKSV0369_KKSV0369OPDBMapper.getKKSV036905SC` | EKK0081A050SC | KK_T_OP_SVC (Optional Service Agreement) | Retrieves optional service agreement data from output map. Read. |
| R | `KKSV0369_KKSV0369OPDBMapper.getKKSV036906SC` | EKK0081A060SC | KK_T_CUST (Customer Agreement) | Retrieves customer agreement data from output map. Read. |
| R | `KKSV0369_KKSV0369OPDBMapper.getKKSV036907SC` | EKK0081A070SC | KK_T_SVC_KEI_UCWK (Service Contract Details) | Retrieves service contract details agreement data from output map. Read. |
| R | `KKSV0369_KKSV0369OPDBMapper.getKKSV036908SC` | EKK0081A080SC | KK_T_OP_SVC_TEL (Optional Service Contract - Telephone) | Retrieves telephone optional service contract agreement data. Read. |
| R | `KKSV0369_KKSV0369OPDBMapper.getKKSV036909SC` | EKK0321A010SC | KK_T_CHI_STIAM_MAX | Retrieves business parameter upper limit data. Read. |
| R | `KKSV0369_KKSV0369OPDBMapper.getKKSV036910SC` | EKK0321A010SC | KK_T_CHI_STIAM_MIN | Retrieves business parameter lower limit data. Read. |
| R | `KKSV0369_KKSV0369OPDBMapper.getKKSV036911SC` | EKK0369A010SC | KK_T_SEIKY_KEI (Billing Contract) | Retrieves billing first view data from output map. Read. |
| R | `KKSV0369_KKSV0369OPDBMapper.getKKSV036913SC` | EKK0369A030SC | KK_T_TEL_OP_SVC_KEI | Retrieves telephone optional service contract list view data. Read. |
| R | `KKSV0369_KKSV0369OPDBMapper.getKKSV036915SC` | - | - | Retrieves additional optional service contract list view data. Read. |
| R | `KKSV0369_KKSV0369OPDBMapper.getKKSV036917CC` | EKK2071B101SC | KK_T_WRIB_SVC (Discount Service) | Retrieves discount service composition list view data. Read — extracts otoku_chk_err_flg and pack_mirai_flg. |
| R | `KKSV0369_KKSV0369OPDBMapper.getKKSV036920SC` | EKK0081A020SC | KK_T_SVC_TGT_KI | Retrieves service target machine service contract data from output map. Read. |
| - | `checkOtokuChkResult` | - | - | Checks promotion/discount validation results when operation is Recovery or Reservation Cancel. |
| - | `JCCWebCommon.setMessageInfo` | - | - | Sets informational messages on the screen for recovery and reservation cancel operations. |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Screen:KKW02519 | `KKW02519SFLogic.actionInit` -> `KKW02519SFLogic.actionInitUpdTran` | `setMessageInfo [-]`, `checkOtokuChkResult [-]`, `sendMessageString [-]`, `invokeService [C/R/U] Multiple KK_T_* entities` |

## 6. Per-Branch Detail Blocks

**Block 1** — [SEQUENCE] `(L134)` Initialize operational date and timestamp on the form bean.

> Retrieves the current operational date and date-time stamp, then stores them on the form bean for audit tracking.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `JCCWebCommon.getOpeDate(this, null)` // Get operational date → returns YYYYMMDD format [-> JCCWebCommon] |
| 2 | EXEC | `svcFormBean.sendMessageString(KKW02519SFConst.UNYO_YMD, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd.substring(0, 8))` // Set operation date (first 8 chars = YYYYMMDD) [-> KKW02519SFConst.UNYO_YMD = "運用年月日"] |
| 3 | CALL | `JCCWebCommon.getOpeDateTimeStamp(this, null)` // Get operational date-time stamp → returns YYYYMMDDHHmmssSSS [-> JCCWebCommon] |
| 4 | EXEC | `svcFormBean.sendMessageString(KKW02519SFConst.UNYO_DTM, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd_tm)` // Set operation date-time stamp [-> KKW02519SFConst.UNYO_DTM = "運用年月日時分秒"] |

**Block 2** — [SEQUENCE] `(L149)` Create parameter maps and set service invocation metadata.

> Prepares HashMaps for the service chain: paramMap carries use-case/operation IDs, inputMap carries mapped bean data, outputMap receives results.

| # | Type | Code |
|---|------|------|
| 1 | SET | `X31SDataBeanAccess[] paramBean = {svcFormBean}` // Wrap form bean in array |
| 2 | SET | `HashMap<String, Object> paramMap = new HashMap<>()` // Parameter map [-> paramMap] |
| 3 | SET | `HashMap<String, Object> inputMap = new HashMap<>()` // Input map [-> inputMap] |
| 4 | SET | `HashMap<String, Object> outputMap = new HashMap<>()` // Output map [-> outputMap] |
| 5 | SET | `paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0369)` // Set UCID = "KKSV0369" [-> JKKCommonConst.UCID_KKSV0369 = "KKSV0369"] |
| 6 | SET | `paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0369OP)` // Set OPID = "KKSV0369OP" [-> JKKCommonConst.OPID_KKSV0369OP = "KKSV0369OP"] |

**Block 3** — [SEQUENCE] `(L155-L188)` Map input data beans to service components via KKSV0369 mapper.

> Invokes 16 `setKKSV0369xxSC/CC` mapper methods to map the form bean data into the inputMap structure, preparing it for service invocation. Each method corresponds to a specific agreement type in the telecom service contract hierarchy.

| # | Type | Code |
|---|------|------|
| 1 | SET | `KKSV0369_KKSV0369OPDBMapper mapper = new KKSV0369_KKSV0369OPDBMapper()` // Create mapper instance |
| 2 | SET | `inputMap = mapper.setKKSV036901SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2)` // Service Contract Agreement |
| 3 | SET | `inputMap = mapper.setKKSV036902SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2)` // Optional Service Contract Agreement |
| 4 | SET | `inputMap = mapper.setKKSV036903SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2)` // Sub-Optional Service Contract Agreement |
| 5 | SET | `inputMap = mapper.setKKSV036904SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1)` // Sub-Optional Service Contract Agreement (FUNC_CD_1) |
| 6 | SET | `inputMap = mapper.setKKSV036905SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2)` // Optional Service Agreement |
| 7 | SET | `inputMap = mapper.setKKSV036906SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2)` // Customer Agreement |
| 8 | SET | `inputMap = mapper.setKKSV036907SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2)` // Service Contract Details Agreement |
| 9 | SET | `inputMap = mapper.setKKSV036908SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2)` // Optional Service Contract (Telephone) Agreement |
| 10 | SET | `inputMap = mapper.setKKSV036909SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1)` // Business Parameter Management (Upper Limit) |
| 11 | SET | `inputMap = mapper.setKKSV036910SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1)` // Business Parameter Management (Lower Limit) |
| 12 | SET | `inputMap = mapper.setKKSV036911SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1)` // Billing First View Agreement |
| 13 | SET | `inputMap = mapper.setKKSV036913SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2, tranDiv)` // Telephone Optional Service Contract View (with tranDiv) |
| 14 | SET | `inputMap = mapper.setKKSV036914CC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1)` // Telephone Selection Optional Package Item CC |
| 15 | SET | `inputMap = mapper.setKKSV036919SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2)` // Abnormal Reservation View |
| 16 | SET | `inputMap = mapper.setKKSV036920SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1)` // Service Target Machine Service Contract View |

**Block 4** — [CALL] `(L190)` Invoke the KKSV0369 service chain.

> Dispatches the prepared paramMap/inputMap to the backend service chain, which performs database operations across all mapped entities.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `invokeService(paramMap, inputMap, outputMap)` // Execute KKSV0369 service — reads/writes service contracts, optional services, billing data, customer agreements |

**Block 5** — [SEQUENCE] `(L194-L213)` Retrieve service results from output map into the form bean.

> Maps results from the outputMap back to the svcFormBean using 14 `getKKSV0369xxSC/CC` mapper methods.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `mapper.getKKSV036901SC(paramBean, outputMap)` // Read service contract data |
| 2 | EXEC | `mapper.getKKSV036902SC(paramBean, outputMap)` // Read optional service contract data |
| 3 | EXEC | `mapper.getKKSV036903SC(paramBean, outputMap)` // Read sub-optional service contract data |
| 4 | EXEC | `mapper.getKKSV036904SC(paramBean, outputMap)` // Read sub-optional service contract data (FUNC_CD_1) |
| 5 | EXEC | `mapper.getKKSV036905SC(paramBean, outputMap)` // Read optional service agreement data |
| 6 | EXEC | `mapper.getKKSV036906SC(paramBean, outputMap)` // Read customer agreement data |
| 7 | EXEC | `mapper.getKKSV036907SC(paramBean, outputMap)` // Read service contract details agreement data |
| 8 | EXEC | `mapper.getKKSV036908SC(paramBean, outputMap)` // Read telephone optional service contract data |
| 9 | EXEC | `mapper.getKKSV036909SC(paramBean, outputMap)` // Read business parameter upper limit data |
| 10 | EXEC | `mapper.getKKSV036910SC(paramBean, outputMap)` // Read business parameter lower limit data |
| 11 | EXEC | `mapper.getKKSV036911SC(paramBean, outputMap)` // Read billing first view data |
| 12 | EXEC | `mapper.getKKSV036913SC(paramBean, outputMap)` // Read telephone optional service contract list |
| 13 | EXEC | `mapper.getKKSV036915SC(paramBean, outputMap)` // Read additional optional service data |
| 14 | EXEC | `mapper.getKKSV036917CC(paramBean, outputMap)` // Read discount service composition data |
| 15 | EXEC | `mapper.getKKSV036920SC(paramBean, outputMap)` // Read service target machine data |

**Block 6** — [IF/ELSE] `(L215-L226)` Extract and process promotion/discount error flag and future pack flag.

> Extracts the promotion check error flag (`otoku_chk_err_flg`) and the future pack existence flag (`pack_mirai_flg`) from the KKSV036917CC output. If svcKeiMap is null (optional package outside scope), defaults to "0" (no warning). These flags drive UI warnings about discount eligibility.

| # | Type | Code |
|---|------|------|
| 1 | SET | `HashMap svcKeiMap = (HashMap)outputMap.get("KKSV036917CC")` // Extract discount service composition result |
| 2 | SET | `String otoku_chk_err_flg = "0"` // Default: no promotion error |
| 3 | IF | `svcKeiMap != null` |
| 3.1 | SET | `otoku_chk_err_flg = (String)svcKeiMap.get("otoku_chk_err_flg")` // Get promotion check error flag from result |
| 3.2 | EXEC | // No action on null branch (comment: "Optional package outside composition scope — no warning") |
| 4 | EXEC | `svcFormBean.sendMessageString(KKW02519SFConst.OTOKU_CHK_ERR_FLG, X31CWebConst.DATABEAN_SET_VALUE, otoku_chk_err_flg)` // Set promotion error flag [-> KKW02519SFConst.OTOKU_CHK_ERR_FLG = "お得チェックエラーフラグ"] |
| 5 | SET | `String pack_mrai_err_flg = "0"` // Default: no future pack flag (IT1-2014-0000155) |
| 6 | IF | `svcKeiMap != null` |
| 6.1 | SET | `pack_mrai_err_flg = (String)svcKeiMap.get("pack_mirai_flg")` // Get future pack existence flag |
| 7 | EXEC | `svcFormBean.sendMessageString(KKW02519SFConst.PACK_MIRAI_FLG, X31CWebConst.DATABEAN_SET_VALUE, pack_mrai_err_flg)` // Set future pack flag [-> KKW02519SFConst.PACK_MIRAI_FLG = "未来パック存在フラグ"] |

**Block 7** — `(L220-L234)` Extract billing contract number and initialize telephone optional service contract end date.

> Reads the billing contract number from the KAKIN_LIST (billing first view list), sets it on the form bean, then splits the operational date (unyo_ymd) into year, month, and day components for the telephone optional service contract end date fields.

| # | Type | Code |
|---|------|------|
| 1 | SET | `X31SDataBeanAccessArray seiky_kei_Info = svcFormBean.getDataBeanArray(KKW02519SFConst.KAKIN_LIST)` // Get billing first view list [-> KKW02519SFConst.KAKIN_LIST = "課金先リスト"] |
| 2 | SET | `X31SDataBeanAccess seiky_kei_subbean = seiky_kei_Info.getDataBean(0)` // Get first row |
| 3 | SET | `String seiky_kei_no = seiky_kei_subbean.sendMessageString(KKW02519SFConst.SEIKY_KEI_NO_15, X31CWebConst.DATABEAN_GET_VALUE)` // Get billing contract number [-> KKW02519SFConst.SEIKY_KEI_NO_15 = "請求契約番号"] |
| 4 | EXEC | `svcFormBean.sendMessageString(KKW02519SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, seiky_kei_no)` // Set billing contract number [-> KKW02519SFConst.SEIKY_KEI_NO = "請求契約番号"] |
| 5 | SET | `String sbopSveKeiNo = svcFormBean.sendMessageString(KKW02519SFConst.SBOP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE)` // Get sub-optional service contract number [-> KKW02519SFConst.SBOP_SVC_KEI_NO = "サブオプションサービス契約番号"] |
| 6 | SET | `X31SDataBeanAccessArray telOpSvcKeiList = svcFormBean.getDataBeanArray(KKW02519SFConst.TEL_OP_SVC_KEI_LIST)` // Get telephone optional service contract list [-> KKW02519SFConst.TEL_OP_SVC_KEI_LIST = "電話オプションサービス契約情報"] |
| 7 | SET | `X31SDataBeanAccess telOpSvcKei = telOpSvcKeiList.getDataBean(0)` // Get first row |
| 8 | EXEC | `telOpSvcKei.sendMessageString(KKW02519SFConst.USE_END_YMD_YEAR_01, ..., unyo_ymd.substring(0, 4))` // Set end date year [-> "利用終了日（年）"] |
| 9 | EXEC | `telOpSvcKei.sendMessageString(KKW02519SFConst.USE_END_YMD_MON_01, ..., unyo_ymd.substring(4, 6))` // Set end date month [-> "利用終了日（月）"] |
| 10 | EXEC | `telOpSvcKei.sendMessageString(KKW02519SFConst.USE_END_YMD_DAY_01, ..., unyo_ymd.substring(6))` // Set end date day [-> "利用終了日（日）"] |

**Block 8** — `(L237-L245)` Read optional service code and get last update timestamp.

> Retrieves the optional service code (OP_SVC_CD_05) from the optional service contract agreement list, and extracts the last update timestamp (last_upd_dtm) from the service contract data (EKK0081A010CBSMsg1List), setting it on the form bean.

| # | Type | Code |
|---|------|------|
| 1 | SET | `X31SDataBeanAccessArray opSvcKeiList = svcFormBean.getDataBeanArray(KKW02519SFConst.OP_SVC_KEI_LIST)` // Get optional service contract agreement list [-> "オプションサービス契約同意照会"] |
| 2 | SET | `X31SDataBeanAccess opSvcKei = opSvcKeiList.getDataBean(0)` // Get first row |
| 3 | SET | `String opSvcCd = opSvcKei.sendMessageString(KKW02519SFConst.OP_SVC_CD_05, X31CWebConst.DATABEAN_GET_VALUE)` // Get optional service code [-> "オプションサービスコード"] |
| 4 | SET | `List<Map<String, Object>> svcKeiList = ((HashMap)outputMap.get("KKSV036901SC")).get("EKK0081A010CBSMsg1List")` // Get service contract list from output |
| 5 | SET | `String upd_dtm = (String)svcKeiList.get(0).get("last_upd_dtm")` // Get last update timestamp |
| 6 | EXEC | `svcFormBean.sendMessageString(KKW02519SFConst.UPD_DTM, X31CWebConst.DATABEAN_SET_VALUE, upd_dtm)` // Set update timestamp [-> "更新年月日時分秒"] |

**Block 9** — [IF/ELSE] `(L248-L350)` Conditional processing: Sub-optional service exists vs. does not exist.

> Core branching logic. If `sbopSveKeiNo` is null/empty, the customer has NO sub-optional service — this is a **new contract addition** scenario. Otherwise, it is an **existing sub-optional service** scenario. In both cases, the method copies service codes and names to the telephone optional service contract display area, formats dates, and handles TWRYO_STIAM (call charge cap) for code "B072".

**Block 9.1** — [IF branch: `null == sbopSveKeiNo || "".equals(sbopSveKeiNo)`] `(L248)` **No sub-optional service (new contract addition)**.

> Copies the optional service code and name from the main optional service agreement to the telephone optional service contract display fields.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `telOpSvcKei.sendMessageString(KKW02519SFConst.OP_CD_01, ..., opSvcKei.sendMessageString(KKW02519SFConst.OP_SVC_CD_05, ...))` // Copy optional service code to telOpSvcKei OP_CD_01 [-> "オプションコード"] |
| 2 | EXEC | `telOpSvcKei.sendMessageString(KKW02519SFConst.OP_NM_01, ..., opSvcKei.sendMessageString(KKW02519SFConst.OP_SVC_CD_NM_05, ...))` // Copy optional service code name to telOpSvcKei OP_NM_01 [-> "オプション名"] |

**Block 9.1.1** — [IF/ELSE] `(L254)` Optional service code == "B072" (TWRYO_STIAM / Call Charge Cap).

> When the optional service code is `"B072"` (TWRYO_STIAM — a call-charge-cap optional service), the method retrieves the call charge cap amount, divides by 1000, and sets it as the usage call specification amount.

| # | Type | Code |
|---|------|------|
| 1 | SET | `X31SDataBeanAccessArray opSvcTelList = svcFormBean.getDataBeanArray(KKW02519SFConst.OP_SVC_TEL_LIST)` // Get optional service contract (Tel) list [-> "オプションサービス契約＜電話＞同意照会"] |
| 2 | SET | `X31SDataBeanAccess opSvcTel = opSvcTelList.getDataBean(0)` // Get first row |
| 3 | SET | `int twryoStiam = Integer.parseInt(opSvcTel.sendMessageString(KKW02519SFConst.TWRYO_STIAM_TTU_TCHI_STIAM_12, X31CWebConst.DATABEAN_GET_VALUE))` // Get call charge cap reaching notification specified amount [-> "通話料指定額到達通知指定金額"] |
| 4 | SET | `twryoStiam = twryoStiam / 1000` // Divide by 1000 (unit conversion) |
| 5 | EXEC | `opSvcTel.sendMessageString(KKW02519SFConst.TWRYO_STIAM_TTU_TCHI_STIAM_12, ..., String.valueOf(twryoStiam))` // Set divided call charge cap amount |
| 6 | EXEC | `telOpSvcKei.sendMessageString(KKW02519SFConst.USE_TW_STIAM_01, ..., String.valueOf(twryoStiam))` // Set usage call specification amount [-> "通話指定額"] |

**Block 9.1.2** — [ELSE] `(L269)` **Non-TWRYO_STIAM service** — Format start date and conditionally format end date.

> For services other than "B072", formats the service start date (svcStaYmd) from YYYYMMDD to YYYY/MM/DD and sets it on the telephone optional service contract record.

| # | Type | Code |
|---|------|------|
| 1 | SET | `String svcStaYmd = opSvcKei.sendMessageString(KKW02519SFConst.DSP_SVCTK_STAYMD, X31CWebConst.DATABEAN_GET_VALUE)` // Get service start date for display [-> "表示用サービス提供開始年月日"] |
| 2 | SET | `String svcStaYmdDate = ""` // Initialize formatted date |
| 3 | IF | `null != svcStaYmd && !"".equals(svcStaYmd)` |
| 3.1 | SET | `svcStaYmdDate = svcStaYmd.substring(0, 4) + "/" + svcStaYmd.substring(4, 6) + "/" + svcStaYmd.substring(6)` // Format: YYYY/MM/DD |
| 4 | EXEC | `telOpSvcKei.sendMessageString(KKW02519SFConst.USE_STA_YMD_01, X31CWebConst.DATABEAN_SET_VALUE, svcStaYmdDate)` // Set formatted start date [-> "利用開始日"] |

**Block 9.1.2.1** — [IF] `(L282)` Screen is KKW02520 and operation is Recovery or Reservation Cancel.

> On the update confirmation screen (KKW02520) for recovery (tDiv="05") or reservation cancel (tDiv="06"), formats the service end date. If the end date equals `MAX_YMD` ("20991231"), it is cleared to empty string (indicating no fixed end date).

| # | Type | Code |
|---|------|------|
| 1 | IF | `JKKScreenConst.SCREEN_ID_KKW02520.equals(screenId) && (JKKCommonConst.OP_TRAN_DIV_KAIHK.equals(tDiv) || JKKCommonConst.OP_TRAN_DIV_RSV_CL.equals(tDiv))` [-> KKW02520 = "KKW02520" (Update Confirmation), KAIHK = "05" (Recovery), RSV_CL = "06" (Reservation Cancel)] |
| 2 | SET | `String svcEndYmd = opSvcKei.sendMessageString(KKW02519SFConst.SVC_END_YMD_05, X31CWebConst.DATABEAN_GET_VALUE)` // Get service end date [-> "サービス終了年月日"] |
| 3 | IF | `JKKCommonConst.MAX_YMD.equals(svcEndYmd)` [-> "20991231"] |
| 3.1 | SET | `svcEndYmd = ""` // Clear to empty if max date (no fixed end) |
| 4 | SET | `String svcEndYmdDate = ""` // Initialize |
| 5 | IF | `null != svcEndYmd && !"".equals(svcEndYmd)` |
| 5.1 | SET | `svcEndYmdDate = svcEndYmd.substring(0, 4) + "/" + svcEndYmd.substring(4, 6) + "/" + svcEndYmd.substring(6)` // Format: YYYY/MM/DD |
| 6 | EXEC | `telOpSvcKei.sendMessageString(KKW02519SFConst.USE_END_YMD_01, X31CWebConst.DATABEAN_SET_VALUE, svcEndYmdDate)` // Set formatted end date [-> "利用終了日"] |

**Block 9.2** — [ELSE branch: `sbopSveKeiNo` has a value] `(L299)` **Has sub-optional service (existing contract update)**.

> Mirrors the new-contract block but reads from the sub-optional service agreement instead of the main optional service agreement. Copies SBOP_SVC_CD_06 / SBOP_SVC_CD_NM_06 to the telephone optional service display fields.

| # | Type | Code |
|---|------|------|
| 1 | SET | `X31SDataBeanAccessArray sbopSvcKeiList = svcFormBean.getDataBeanArray(KKW02519SFConst.SBOP_SVC_KEI_LIST)` // Get sub-optional service contract agreement list [-> "サブオプションサービス契約同意照会"] |
| 2 | SET | `X31SDataBeanAccess sbopSvcKei = sbopSvcKeiList.getDataBean(0)` // Get first row |
| 3 | EXEC | `telOpSvcKei.sendMessageString(KKW02519SFConst.OP_CD_01, ..., sbopSvcKei.sendMessageString(KKW02519SFConst.SBOP_SVC_CD_06, ...))` // Copy sub-optional service code [-> "サブオプションサービスコード"] |
| 4 | EXEC | `telOpSvcKei.sendMessageString(KKW02519SFConst.OP_NM_01, ..., sbopSvcKei.sendMessageString(KKW02519SFConst.SBOP_SVC_CD_NM_06, ...))` // Copy sub-optional service code name [-> "サブオプションサービスコード名称"] |
| 5 | SET | `String svcStaYmd = sbopSvcKei.sendMessageString(KKW02519SFConst.DSP_SVCTK_STAYMD, X31CWebConst.DATABEAN_GET_VALUE)` // Get service start date for display |
| 6 | SET | `String svcStaYmdDate = ""` |
| 7 | IF | `null != svcStaYmd && !"".equals(svcStaYmd)` |
| 7.1 | SET | `svcStaYmdDate = svcStaYmd.substring(0, 4) + "/" + svcStaYmd.substring(4, 6) + "/" + svcStaYmd.substring(6)` // Format: YYYY/MM/DD |
| 8 | EXEC | `telOpSvcKei.sendMessageString(KKW02519SFConst.USE_STA_YMD_01, ..., svcStaYmdDate)` // Set formatted start date |

**Block 9.2.1** — [IF] `(L334)` Screen is KKW02520 and operation is Recovery or Reservation Cancel.

> Same logic as Block 9.1.2.1 but reads from the sub-optional service agreement for the end date.

| # | Type | Code |
|---|------|------|
| 1 | IF | `JKKScreenConst.SCREEN_ID_KKW02520.equals(screenId) && (JKKCommonConst.OP_TRAN_DIV_KAIHK.equals(tDiv) || JKKCommonConst.OP_TRAN_DIV_RSV_CL.equals(tDiv))` |
| 2 | SET | `String svcEndYmd = sbopSvcKei.sendMessageString(KKW02519SFConst.SVC_END_YMD_05, X31CWebConst.DATABEAN_GET_VALUE)` // Get service end date from sub-optional service |
| 3 | IF | `JKKCommonConst.MAX_YMD.equals(svcEndYmd)` [-> "20991231"] |
| 3.1 | SET | `svcEndYmd = ""` // Clear if max date |
| 4 | SET | `String svcEndYmdDate = ""` |
| 5 | IF | `null != svcEndYmd && !"".equals(svcEndYmd)` |
| 5.1 | SET | `svcEndYmdDate = svcEndYmd.substring(0, 4) + "/" + svcEndYmd.substring(4, 6) + "/" + svcEndYmd.substring(6)` // Format: YYYY/MM/DD |
| 6 | EXEC | `telOpSvcKei.sendMessageString(KKW02519SFConst.USE_END_YMD_01, ..., svcEndYmdDate)` // Set formatted end date |

**Block 10** — [IF/ELSE-IF] `(L347-L378)` Operation type check: Recovery or Reservation Cancel.

> When the operation transaction division is "05" (Recovery / Kaihk) or "06" (Reservation Cancel / RsvCl), the method performs promotion/discount validation (`checkOtokuChkResult`) and sets a screen message identifying the operation type. This ensures the user is warned about discount implications when restoring or canceling reservations.

**Block 10.1** — [IF branch: `JKKCommonConst.OP_TRAN_DIV_KAIHK.equals(tDiv)`] `(L347)` tDiv == "05" (Recovery / Kaihk).

> Recovery operation: A previously canceled telephone optional service is being restored. The method validates discount eligibility and sets an informational message.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `checkOtokuChkResult(paramBean, outputMap)` // Check promotion/discount validation results |
| 2 | SET | `String[] str = {"Telephone Optional Service Contract Recovery"}` // (Original Japanese: "電話オプションサービス契約の回復") |
| 3 | CALL | `JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, str)` // Set informational message for recovery operation |

**Block 10.2** — [ELSE-IF branch: `JKKCommonConst.OP_TRAN_DIV_RSV_CL.equals(tDiv)`] `(L362)` tDiv == "06" (Reservation Cancel / RsvCl).

> Reservation cancel operation: A reserved telephone optional service is being canceled. The method validates discount eligibility and sets an informational message.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `checkOtokuChkResult(paramBean, outputMap)` // Check promotion/discount validation results |
| 2 | SET | `String[] str = {"Telephone Optional Service Contract Reservation Cancel"}` // (Original Japanese: "電話オプションサービス契約の予約取消") |
| 3 | CALL | `JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, str)` // Set informational message for reservation cancel operation |

**Block 11** — [RETURN] `(L378)` Return.

> This method returns void — all output is written back to `svcFormBean` which the caller (KKW02519SFLogic.actionInit) will then use to render the screen.

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `unyo_ymd` | Field | Operation Date — current system date in YYYYMMDD format, used for audit timestamps |
| `unyo_ymd_tm` | Field | Operation Date-Time Stamp — current system date-time in YYYYMMDDHHmmssSSS format |
| `svcFormBean` | Field | Service Form Bean — the primary data container carrying all screen-level fields between UI and business logic |
| `screenId` | Field | Screen ID — identifies which screen triggered the processing (KKW02519 = update, KKW02520 = update confirmation) |
| `tDiv` / `tranDiv` | Field | Transaction Division — operation type code ("05" = Recovery, "06" = Reservation Cancel, "02" = Update, "03" = DSL) |
| KKSV0369 | Screen/UC | Telephone Optional Service Contract Update — the use-case/screen group for managing optional service contracts |
| KKW02519 | Screen ID | Telephone Optional Service Contract Update screen (更新画面) — main editing screen |
| KKW02520 | Screen ID | Telephone Optional Service Contract Update Confirmation screen (更新確認画面) — confirmation screen reached via direct transition |
| UCID_KKSV0369 | Constant | Use-Case ID = "KKSV0369" — identifies the use-case for service invocation routing |
| OPID_KKSV0369OP | Constant | Operation ID = "KKSV0369OP" — identifies the specific operation within the use-case |
| OP_SVC_CD | Field | Optional Service Code — the code identifying a specific optional service (e.g., "B072" = TWRYO_STIAM) |
| OP_SVC_CD_05 | Field | Optional Service Contract Agreement List — Optional Service Code field in the OP_SVC_KEI_LIST data structure |
| OP_CD_01 | Field | Optional Code — telephone optional service contract display field for operation code |
| OP_NM_01 | Field | Optional Name — telephone optional service contract display field for operation name |
| SBOP_SVC_CD_06 | Field | Sub-Optional Service Code — code field in the SBOP_SVC_KEI_LIST data structure |
| SBOP_SVC_KEI_NO | Field | Sub-Optional Service Contract Number — internal tracking ID for sub-optional service contracts |
| SEIKY_KEI_NO | Field | Billing Contract Number — the billing-side contract identifier |
| SEIKY_KEI_NO_15 | Field | Billing Contract Number field in the KAKIN_LIST (billing first view list) data structure |
| TWRYO_STIAM | Field | Call Charge Cap (通話料指定額) — a cap amount for call charges; "B072" is the service code for this specific optional service |
| TWRYO_STIAM_TTU_TCHI_STIAM_12 | Field | Call Charge Cap Reaching Notification Specified Amount — the threshold amount at which the customer is notified |
| USE_STA_YMD_01 | Field | Service Start Date (利用開始日) — formatted as YYYY/MM/DD for display |
| USE_END_YMD_01 | Field | Service End Date (利用終了日) — formatted as YYYY/MM/DD for display; empty means no fixed end |
| USE_TW_STIAM_01 | Field | Usage Call Specification Amount (通話指定額) — the call charge cap amount for display |
| DSP_SVCTK_STAYMD | Field | Display Service Start Date (表示用サービス提供開始年月日) — service start date formatted for UI display |
| SVC_END_YMD_05 | Field | Service End Date (サービス終了年月日) — service end date in YYYYMMDD format from the service contract agreement list |
| UPD_DTM | Field | Update Date-Time Stamp (更新年月日時分秒) — last modification timestamp of the service contract |
| OTOKU_CHK_ERR_FLG | Field | Promotion/Discount Check Error Flag (お得チェックエラーフラグ) — "0" = no warning, non-zero = promotion discount warning |
| PACK_MIRAI_FLG | Field | Future Pack Existence Flag (未来パック存在フラグ) — indicates if a future pack service exists |
| KAKIN_LIST | Field | Billing First View List (課金先リスト) — list of billing destination contract data |
| TEL_OP_SVC_KEI_LIST | Field | Telephone Optional Service Contract Information (電話オプションサービス契約情報) — list of tel optional service contract data |
| OP_SVC_KEI_LIST | Field | Optional Service Contract Agreement List (オプションサービス契約同意照会) — list of optional service contract agreement data |
| SBOP_SVC_KEI_LIST | Field | Sub-Optional Service Contract Agreement List (サブオプションサービス契約同意照会) — list of sub-optional service contract agreement data |
| OP_SVC_TEL_LIST | Field | Optional Service Contract (Telephone) Agreement List (オプションサービス契約＜電話＞同意照会) — list of telephone-specific optional service data |
| MAX_YMD | Constant | Maximum date = "20991231" — used as sentinel value meaning "no fixed end date" |
| OP_TRAN_DIV_KAIHK | Constant | Transaction Division = "05" (Recovery / 回復) — operation type for restoring a previously canceled service |
| OP_TRAN_DIV_RSV_CL | Constant | Transaction Division = "06" (Reservation Cancel / 予約取消) — operation type for canceling a reserved service |
| OP_SVC_CD_VALUE_TWRYO_STIAM | Constant | Optional Service Code for TWRYO_STIAM = "B072" — identifies the call-charge-cap optional service |
| EKK0081A010CBSMsg1List | Field | Service contract CBS message list — contains `last_upd_dtm` and other service contract fields |
| FUNC_CD_1 / FUNC_CD_2 | Constant | Function Code variants passed to mapper methods — distinguish different data access modes |
| JPCOnlineMessageConstant.EKB0370__I | Constant | Information message template key — used with setMessageInfo for recovery/cancel messages |
