# Business Logic — FUW02001SFLogic.getCommoninfoBeanInfo() [125 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.FUW02001SF.FUW02001SFLogic` |
| Layer | Service Logic (Web Frontend Service) |
| Module | `FUW02001SF` (Package: `eo.web.webview.FUW02001SF`) |

## 1. Role

### FUW02001SFLogic.getCommoninfoBeanInfo()

This method serves as the **core data consolidation utility** for the common information form bean (`共有フォームBean`) in the K-Opticom web service platform. It receives a hierarchical data bean containing customer, service contract, and optional service contract information, then navigates the nested bean structure to extract, filter, and correlate the relevant business objects into a flat map for downstream screen processing.

Specifically, the method performs three key business operations. First, it extracts SSO (Single Sign-On) authentication context — SYSID and POPID — from the nested bean hierarchy, which identifies the current user session and the Point of Presence for service routing. Second, it iterates through the array of optional service contracts to find the one matching the SSO POPID and carrying service code B001 (E-Mail / Eメール), which represents the customer's active email optional service with valid status (Service Provision In Progress: 100, Inspection Complete: 020, or Contract Completed: 030). Third, if an active optional service is found, it drills into sub-optional service contracts to locate the Mail Alias (D01) entry whose contract number matches the parent optional service contract number, filtering out terminated (Rescinded: 910) or cancelled (Cancelled: 920) sub-services.

The method implements a **hierarchical data traversal with conditional narrowing** pattern. It starts from a broad bean structure, progressively narrows down through nested one-to-one and one-to-many relationships, and applies state-based filtering to isolate the exact business records needed. It is a shared utility called internally by three entry points within the same logic class: `cfm()`, `init()`, and `mskm()`.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["getCommoninfoBeanInfo(commoninfoBean)"])

    START --> INIT["Initialize resultMap = new HashMap"]
    INIT --> EXTRACT_WEB["Extract webChgInfoBean from commoninfoBean.WEB_CHG_INFO"]
    EXTRACT_WEB --> EXTRACT_SSO["Extract ssoInfoBean from webChgInfoBean.SSO_INFO"]
    EXTRACT_SSO --> GET_SSO_SYSID["Get ssoInfoSysid via SSO_INFO.SYSID_21"]
    GET_SSO_SYSID --> GET_SSO_POPID["Get ssoInfoPopid via SSO_INFO.POP_ID_21"]
    GET_SSO_POPID --> EXTRACT_GEN["Extract genCustKeiInfoBean from webChgInfoBean.GEN_CUST_KEI_INFO"]
    EXTRACT_GEN --> EXTRACT_SVC["Extract svcKeiInfoBean from genCustKeiInfo.SVC_KEI_INFO"]
    EXTRACT_SVC --> EXTRACT_UCWK["Extract svcKeiUcwkInfoBean from svcKeiInfo.SVC_KEI_UCWK_INFO"]
    EXTRACT_UCWK --> EXTRACT_SEIKY["Extract seikyKeiInfoBean from svcKeiInfo.SEIKY_KEI_INFO"]
    EXTRACT_SEIKY --> SET_OP_NULL["Set opSvcKeiInfoBean = null"]
    SET_OP_NULL --> GET_OP_ARRAY["Get opSvcKeiInfoArray from svcKeiUcwk.OP_SVC_KEI_INFO"]

    GET_OP_ARRAY --> LOOP_OP["Loop m: 0 to opSvcKeiInfoArray.getCount"]
    LOOP_OP --> GET_TMP_OP["Get tmpOpSvcKeiInfoBean at index m"]
    GET_TMP_OP --> EXTRACT_POP_ID["Extract popId via OP_ID_28"]
    EXTRACT_POP_ID --> EXTRACT_OP_SVC_CD["Extract opSvCd via OP_SVC_CD_28"]
    EXTRACT_OP_SVC_CD --> EXTRACT_OP_STAT["Extract opSvcKeiStat via OP_SVC_KEI_STAT_28"]

    EXTRACT_OP_STAT --> CHECK_OP_STAT{opSvcKeiStat == CD00037_100 OR CD00037_020 OR CD00037_030?}
    CHECK_OP_STAT -- No --> SKIP_OP["continue (skip)"]
    CHECK_OP_STAT -- Yes --> CHECK_POP_SVC{popId == ssoInfoPopid AND opSvCd == CD00136_B001?}
    CHECK_POP_SVC -- Yes --> SET_OPBean["opSvcKeiInfoBean = tmpOpSvcKeiInfoBean"]
    CHECK_POP_SVC -- No --> CONTINUE_OP
    SET_OPBean --> CONTINUE_OP
    SKIP_OP --> CONTINUE_OP

    CONTINUE_OP --> CHECK_OPBean{opSvcKeiInfoBean != null?}
    CHECK_OPBean -- No --> BUILD_MAP["Build resultMap with all beans"]
    CHECK_OPBean -- Yes --> GET_OPKEI_NO["Extract opInfoOpSvcKeiNo via OP_SVC_KEI_NO_28"]

    GET_OPKEI_NO --> CHECK_OPKEI_NO_EMPTY{opInfoOpSvcKeiNo == null?}
    CHECK_OPKEI_NO_EMPTY -- Yes --> THROW_ERROR["Log error and throw JCCBusinessException ERROR_CODE_0002"]
    CHECK_OPKEI_NO_EMPTY -- No --> GET_SBOP_ARRAY["Get sbopSvcKeiInfoArray from opSvcKeiBean(0).SBOP_SVC_KEI_INFO"]

    GET_SBOP_ARRAY --> LOOP_SBOP["Loop n: 0 to sbopSvcKeiInfoArray.getCount"]
    LOOP_SBOP --> GET_TMP_SBOP["Get tmpSbopSvcKeiInfoBean at index n"]
    GET_TMP_SBOP --> EXTRACT_SBOP_NO["Extract opSvcKeiNo via OP_SVC_KEI_NO_29"]
    EXTRACT_SBOP_NO --> EXTRACT_SBOP_STAT["Extract sbopSvcKeiStat via SBOP_SVC_KEI_STAT_29"]
    EXTRACT_SBOP_STAT --> EXTRACT_SBOP_SVC_CD["Extract sbopSvCd via SBOP_SVC_CD_29"]

    EXTRACT_SBOP_SVC_CD --> CHECK_SBOP_STAT{sbopSvcKeiStat == CD00037_910 OR CD00037_920?}
    CHECK_SBOP_STAT -- Yes --> SKIP_SBOP["continue (skip)"]
    CHECK_SBOP_STAT -- No --> CHECK_SBOP_MATCH{opInfoOpSvcKeiNo == opSvcKeiNo AND sbopSvCd == CD00137_D01?}
    CHECK_SBOP_MATCH -- Yes --> SET_SBOP["sbopSvcKeiInfoBean = tmpSbopSvcKeiInfoBean"]
    CHECK_SBOP_MATCH -- No --> CONTINUE_SBOP
    SET_SBOP --> CONTINUE_SBOP
    SKIP_SBOP --> CONTINUE_SBOP

    CONTINUE_SBOP --> CHECK_SBOPBean{sbopSvcKeiInfoBean != null?}
    CHECK_SBOPBean -- No --> BUILD_MAP

    BUILD_MAP --> MAP_SYSID["resultMap.put(SYSID_21, ssoInfoSysid)"]
    MAP_SYSID --> MAP_POPID["resultMap.put(POP_ID_21, ssoInfoPopid)"]
    MAP_POPID --> MAP_SSO["resultMap.put(SSO_INFO, ssoInfoBean)"]
    MAP_SSO --> MAP_GEN["resultMap.put(GEN_CUST_KEI_INFO, genCustKeiInfoBean)"]
    MAP_GEN --> MAP_SVC["resultMap.put(SVC_KEI_INFO, svcKeiInfoBean)"]
    MAP_SVC --> MAP_UCWK["resultMap.put(SVC_KEI_UCWK_INFO, svcKeiUcwkInfoBean)"]
    MAP_UCWK --> MAP_SEIKY["resultMap.put(SEIKY_KEI_INFO, seikyKeiInfoBean)"]
    MAP_SEIKY --> MAP_OP["resultMap.put(OP_SVC_KEI_INFO, opSvcKeiInfoBean)"]
    MAP_OP --> MAP_SBOP["resultMap.put(SBOP_SVC_KEI_INFO, sbopSvcKeiInfoBean)"]
    MAP_SBOP --> END_RETURN(["Return resultMap"])

    THROW_ERROR --> END_RETURN

    CONTINUE_OP --> CHECK_OPBean
    CONTINUE_SBOP --> CHECK_SBOPBean
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `commoninfoBean` | `X31SDataBeanAccess` | The master data bean carrying the complete common information form structure, including nested sub-beans for SSO authentication context, current customer contract details, service contract hierarchy, and optional service contract arrays. This bean is populated by upstream screen logic before this method is called. |

**Instance fields / external state read:** None. The method is self-contained and reads only from its parameter.

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | `OneStopDataBeanAccessArray.getCount` | - | - | Calls `getCount` to iterate over optional service contract array |
| - | `OneStopDataBeanAccessArray.getDataBean` | - | - | Calls `getDataBean` to retrieve each optional service contract bean at index m |
| - | `OneStopDataBeanAccess.getDataBeanArray` | - | - | Calls `getDataBeanArray` to traverse nested bean hierarchies (WEB_CHG_INFO, SSO_INFO, etc.) |
| - | `OneStopDataBeanAccess.sendMessageString` | - | - | Calls `sendMessageString` with `DATABEAN_GET_VALUE` to read field values from data beans |
| - | `JFUWebCommon.isNull` | JFUWebCommon | - | Calls `isNull` to validate that the optional service contract number is not empty |
| - | `X31SWebLog.DEBUG_LOG.debug` | - | - | Logs a debug message for "Optional Service Contract Number Not Set Error" |
| C | `JCCBusinessException.<init>` | - | - | Throws business exception with error code 0002 when optional service contract number is missing |

**Note:** This method performs **data traversal and filtering only** — it does not invoke any service component (SC) or business service (CBS) methods that perform database operations. All data is read from the in-memory `X31SDataBeanAccess` bean hierarchy that was populated by upstream callers. The only side effect is a possible exception throw when validation fails.

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Class: FUW02001SFLogic.cfm() | `cfm()` -> `getCommoninfoBeanInfo(commoninfoBean)` | `sendMessageString [R] (in-memory bean)` x4 |
| 2 | Class: FUW02001SFLogic.init() | `init()` -> `getCommoninfoBeanInfo(commoninfoBean)` | `sendMessageString [R] (in-memory bean)` x4 |
| 3 | Class: FUW02001SFLogic.mskm() | `mskm()` -> `getCommoninfoBeanInfo(commoninfoBean)` | `sendMessageString [R] (in-memory bean)` x4 |

**Terminal operations from this method:** `sendMessageString` (x4 in initial extraction), `sendMessageString` (x3 in optional service loop), `sendMessageString` (x3 in sub-optional service loop), `getCount` (x2), `getDataBean` (x2), `getDataBeanArray` (x6), `isNull` (x1), `sendMessageString` (x9 for resultMap.put), `JCCBusinessException` throw (conditional).

## 6. Per-Branch Detail Blocks

**Block 1** — [SET] Initialize result container (L555)

| # | Type | Code |
|---|------|------|
| 1 | SET | `resultMap = new HashMap<String, Object>()` // Creates map to hold extracted bean info |

**Block 2** — [EXEC] Extract WEB change info and SSO context (L558–560)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `webChgInfoBean = commoninfoBean.getDataBeanArray(WEB_CHG_INFO).getDataBean(0)` // Extracts WEB変更情報 (WEB Change Info) |
| 2 | EXEC | `ssoInfoBean = webChgInfoBean.getDataBeanArray(SSO_INFO).getDataBean(0)` // Extracts SSO情報 (SSO Info) |

**Block 3** — [EXEC] Read SSO authentication fields (L563–564)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `ssoInfoSysid = ssoInfoBean.sendMessageString(SYSID_21, DATABEAN_GET_VALUE)` // Reads SSO認証ID (Authentication ID) |
| 2 | EXEC | `ssoInfoPopid = ssoInfoBean.sendMessageString(POP_ID_21, DATABEAN_GET_VALUE)` // Reads SSO POPID (Point of Presence ID) |

**Block 4** — [EXEC] Extract customer and service contract hierarchy (L567–572)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `genCustKeiInfoBean = webChgInfoBean.getDataBeanArray(GEN_CUST_KEI_INFO).getDataBean(0)` // Extracts 現顧客契約情報 (Current Customer Contract Info) |
| 2 | EXEC | `svcKeiInfoBean = genCustKeiInfoBean.getDataBeanArray(SVC_KEI_INFO).getDataBean(0)` // Extracts サービス契約情報 (Service Contract Info) |
| 3 | EXEC | `svcKeiUcwkInfoBean = svcKeiInfoBean.getDataBeanArray(SVC_KEI_UCWK_INFO).getDataBean(0)` // Extracts サービス契約内訳情報 (Service Contract Details Info) |
| 4 | EXEC | `seikyKeiInfoBean = svcKeiInfoBean.getDataBeanArray(SEIKY_KEI_INFO).getDataBean(0)` // Extracts 請求契約情報 (Billing Contract Info) |

**Block 5** — [SET] Initialize optional service reference (L575)

| # | Type | Code |
|---|------|------|
| 1 | SET | `opSvcKeiInfoBean = null` // Optional service contract info (working reference) |

**Block 6** — [SET] Get optional service contract array (L578)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `opSvcKeiInfoArray = svcKeiUcwkInfoBean.getDataBeanArray(OP_SVC_KEI_INFO)` // Gets オプションサービス契約情報 array |

**Block 7** — [FOR] Iterate over optional service contracts (L580–611)

| # | Type | Code |
|---|------|------|
| 1 | SET | `m = 0` // Loop counter for optional service contracts |
| 2 | EXEC | `m < opSvcKeiInfoArray.getCount()` // Loop condition |
| 3 | EXEC | `m++` // Increment loop counter |

**Block 7.1** — [EXEC] Extract fields from current optional service bean (L583–591)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `tmpOpSvcKeiInfoBean = opSvcKeiInfoArray.getDataBean(m)` // Gets optional service contract bean at index m |
| 2 | EXEC | `popId = tmpOpSvcKeiInfoBean.sendMessageString(POP_ID_28, DATABEAN_GET_VALUE)` // Reads POPID from optional service bean |
| 3 | EXEC | `opSvCd = tmpOpSvcKeiInfoBean.sendMessageString(OP_SVC_CD_28, DATABEAN_GET_VALUE)` // Reads オプションサービスコード (Optional Service Code) |
| 4 | EXEC | `opSvcKeiStat = tmpOpSvcKeiInfoBean.sendMessageString(OP_SVC_KEI_STAT_28, DATABEAN_GET_VALUE)` // Reads オプションサービス契約ステータス (Optional Service Contract Status) |

**Block 7.2** — [IF] Filter by valid optional service contract status (L594–600)
Condition: `!JFUStrConst.CD00037_100.equals(opSvcKeiStat) && !JFUStrConst.CD00037_020.equals(opSvcKeiStat) && !JFUStrConst.CD00037_030.equals(opSvcKeiStat)`
[CD00037_100="100" (Service Provision In Progress), CD00037_020="020" (Inspection Complete), CD00037_030="030" (Contract Completed)]

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `continue` // Skips optional service contracts that are NOT in an active/valid state |

**Block 7.3** — [IF] Match optional service by POPID and service code (L603–608)
Condition: `ssoInfoPopid.equals(popId) && JFUStrConst.CD00136_B001.equals(opSvCd)`
[CD00136_B001="B001" (E-Mail / メール Optional Service Code)]

| # | Type | Code |
|---|------|------|
| 1 | SET | `opSvcKeiInfoBean = tmpOpSvcKeiInfoBean` // Sets matched optional service contract as the confirmed one |

**Block 8** — [SET] Initialize sub-optional service reference (L614)

| # | Type | Code |
|---|------|------|
| 1 | SET | `sbopSvcKeiInfoBean = null` // Sub-optional service contract info (working reference) |

**Block 9** — [IF] Validate optional service contract number exists (L616–631)
Condition: `opSvcKeiInfoBean != null`

**Block 9.1** — [EXEC] Extract optional service contract number (L619)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `opInfoOpSvcKeiNo = opSvcKeiInfoBean.sendMessageString(OP_SVC_KEI_NO_28, DATABEAN_GET_VALUE)` // Reads オプションサービス契約番号 (Optional Service Contract Number) |

**Block 9.2** — [IF] Validate contract number is not null (L621–625)
Condition: `JFUWebCommon.isNull(opInfoOpSvcKeiNo)`

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `JFUWebCommon.DEBUG_LOG.debug("【オプションサービス契約番号未設定エラー】")` // Logs "Optional Service Contract Number Not Set Error" |
| 2 | C | `throw new JCCBusinessException(ERROR_CODE_0002)` // Throws business exception with code "0002" |

**Block 9.3** — [EXEC] Get sub-optional service contract array (L628)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `sbopSvcKeiInfoArray = opSvcKeiInfoArray.getDataBean(0).getDataBeanArray(SBOP_SVC_KEI_INFO)` // Gets サブオプションサービス契約情報 array from the first optional service bean |

**Block 9.4** — [FOR] Iterate over sub-optional service contracts (L630–655)

| # | Type | Code |
|---|------|------|
| 1 | SET | `n = 0` // Loop counter for sub-optional service contracts |
| 2 | EXEC | `n < sbopSvcKeiInfoArray.getCount()` // Loop condition |
| 3 | EXEC | `n++` // Increment loop counter |

**Block 9.4.1** — [EXEC] Extract fields from sub-optional service bean (L633–644)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `tmpSbopSvcKeiInfoBean = sbopSvcKeiInfoArray.getDataBean(n)` // Gets sub-optional service contract bean at index n |
| 2 | EXEC | `opSvcKeiNo = tmpSbopSvcKeiInfoBean.sendMessageString(OP_SVC_KEI_NO_29, DATABEAN_GET_VALUE)` // Reads オプションサービス契約番号 from sub-optional |
| 3 | EXEC | `sbopSvcKeiStat = tmpSbopSvcKeiInfoBean.sendMessageString(SBOP_SVC_KEI_STAT_29, DATABEAN_GET_VALUE)` // Reads サブオプションサービス契約ステータス (Sub-Optional Service Contract Status) |
| 4 | EXEC | `sbopSvCd = tmpSbopSvcKeiInfoBean.sendMessageString(SBOP_SVC_CD_29, DATABEAN_GET_VALUE)` // Reads サブオプションサービスコード (Sub-Optional Service Code) |

**Block 9.4.2** — [IF] Filter out terminated/cancelled sub-optional services (L647–651)
Condition: `JFUStrConst.CD00037_910.equals(sbopSvcKeiStat) || JFUStrConst.CD00037_920.equals(sbopSvcKeiStat)`
[CD00037_910="910" (Rescinded / 解除済), CD00037_920="920" (Cancelled / キャンセル済)]

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `continue` // Skips terminated or cancelled sub-optional services |

**Block 9.4.3** — [IF] Match sub-optional service by contract number and service code (L654–658)
Condition: `opInfoOpSvcKeiNo.equals(opSvcKeiNo) && JFUStrConst.CD00137_D01.equals(sbopSvCd)`
[CD00137_D01="D01" (Mail Alias / メールエイリアス Sub-Optional Service Code)]

| # | Type | Code |
|---|------|------|
| 1 | SET | `sbopSvcKeiInfoBean = tmpSbopSvcKeiInfoBean` // Sets matched sub-optional service contract as the confirmed one |

**Block 10** — [SET] Populate resultMap with all extracted beans (L661–671)

| # | Type | Code |
|---|------|------|
| 1 | SET | `resultMap.put(SYSID_21, ssoInfoSysid)` // Sets SYSID (システムID) |
| 2 | SET | `resultMap.put(POP_ID_21, ssoInfoPopid)` // Sets POPID (ポイントオブプレゼンスID) |
| 3 | SET | `resultMap.put(SSO_INFO, ssoInfoBean)` // Sets SSO情報 (SSO Info bean) |
| 4 | SET | `resultMap.put(GEN_CUST_KEI_INFO, genCustKeiInfoBean)` // Sets 現顧客契約情報 (Current Customer Contract Info) |
| 5 | SET | `resultMap.put(SVC_KEI_INFO, svcKeiInfoBean)` // Sets サービス契約情報 (Service Contract Info) |
| 6 | SET | `resultMap.put(SVC_KEI_UCWK_INFO, svcKeiUcwkInfoBean)` // Sets サービス契約内訳情報 (Service Contract Details Info) |
| 7 | SET | `resultMap.put(SEIKY_KEI_INFO, seikyKeiInfoBean)` // Sets 請求契約情報 (Billing Contract Info) |
| 8 | SET | `resultMap.put(OP_SVC_KEI_INFO, opSvcKeiInfoBean)` // Sets オプションサービス契約情報 (Optional Service Contract Info, may be null) |
| 9 | SET | `resultMap.put(SBOP_SVC_KEI_INFO, sbopSvcKeiInfoBean)` // Sets サブオプションサービス契約情報 (Sub-Optional Service Contract Info, may be null) |

**Block 11** — [RETURN] Return consolidated map (L673)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return resultMap` // Returns map containing all extracted and correlated bean data |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `commoninfoBean` | Parameter | Master common information data bean — carries the full nested structure of customer, service, and optional service contract data for the current screen session |
| `SYSID_21` | Field | System ID — identifies the system in the SSO authentication context |
| `POP_ID_21` / `POP_ID_28` | Field | POP ID (Point of Presence ID) — identifies the network access point for the customer; used to match optional service contracts to the authenticated session |
| `SSO_INFO` | Field | SSO情報 (SSO Information) — contains single sign-on authentication data including system ID and POP ID |
| `WEB_CHG_INFO` | Field | WEB変更情報 (WEB Change Information) — wrapper bean for WEB-side change request data |
| `GEN_CUST_KEI_INFO` | Field | 現顧客契約情報 (Current Customer Contract Information) — customer's existing contract details |
| `SVC_KEI_INFO` | Field | サービス契約情報 (Service Contract Information) — top-level service contract data |
| `SVC_KEI_UCWK_INFO` | Field | サービス契約内訳情報 (Service Contract Breakdown Information) — detailed sub-entries within a service contract |
| `SEIKY_KEI_INFO` | Field | 請求契約情報 (Billing Contract Information) — contract data related to invoicing/billing |
| `OP_SVC_KEI_INFO` | Field | オプションサービス契約情報 (Optional Service Contract Information) — array of optional/add-on service contracts associated with the customer |
| `SBOP_SVC_KEI_INFO` | Field | サブオプションサービス契約情報 (Sub-Optional Service Contract Information) — nested contracts under an optional service |
| `OP_SVC_CD_28` / `SBOP_SVC_CD_29` | Field | Optional / Sub-Optional Service Code — classifies the type of optional service |
| `OP_SVC_KEI_STAT_28` / `SBOP_SVC_KEI_STAT_29` | Field | Optional / Sub-Optional Service Contract Status — current lifecycle state of the service contract |
| `OP_SVC_KEI_NO_28` / `OP_SVC_KEI_NO_29` | Field | Optional / Sub-Optional Service Contract Number — unique identifier for the contract, used to correlate parent and sub contracts |
| CD00037_100 | Constant | "100" — サービス契約ステータス: サービス提供中 (Service Contract Status: Service Provision In Progress) |
| CD00037_020 | Constant | "020" — サービス契約ステータス: 照察済 (Service Contract Status: Inspection Complete) |
| CD00037_030 | Constant | "030" — サービス契約ステータス: 締結済 (Service Contract Status: Contract Completed) |
| CD00037_910 | Constant | "910" — サービス契約ステータス: 解除済 (Service Contract Status: Rescinded / Terminated) |
| CD00037_920 | Constant | "920" — サービス契約ステータス: キャンセル済 (Service Contract Status: Cancelled) |
| CD00136_B001 | Constant | "B001" — オプションサービスコード: Eメール (Optional Service Code: E-Mail) |
| CD00137_D01 | Constant | "D01" — サブオプションサービスコード: メールエイリアス (Sub-Optional Service Code: Mail Alias) |
| ERROR_CODE_0002 | Constant | "0002" — System error code for "Optional service contract number not set" (オプションサービス契約番号未設定エラー) |
| X31SDataBeanAccess | Class | Data access bean — hierarchical data container used across the K-Opticom web platform for passing structured business data between components |
| X31SDataBeanAccessArray | Class | Array wrapper for X31SDataBeanAccess — provides `getCount()` and `getDataBean(index)` for iterating over collections of data beans |
| JCCBusinessException | Class | Business exception class — thrown when business rule validation fails (e.g., missing required data) |
| DATABEAN_GET_VALUE | Constant | Command sent via `sendMessageString` to retrieve a field value from a data bean |
| FTTH | Business term | Fiber To The Home — K-Opticom's fiber-optic broadband internet service |
| SSO | Acronym | Single Sign-On — authentication mechanism for user session management |
| POP | Acronym | Point of Presence — network access point identifier used for service routing and contract matching |
