# Business Logic — JKKTelnoInfoAddCC.buturyuCtrlTran() [237 LOC]

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

## 1. Role

### JKKTelnoInfoAddCC.buturyuCtrlTran()

This method performs **logistics control processing** for telephone number information registration scenarios in the K-Opticom customer base system. Its primary responsibility is to construct and populate a structured target data map (`buturyu_ctrl_cc_trgt_data`) that describes the delivery and return (haisen) logistics context for a given subscription line item, then delegate to `JKKButuryuCtrlCC.buturyuCtrlTran()` for the actual logistics workflow execution.

The method handles **three distinct service types** based on the `haisohmpin` parameter: delivery only (`HAISO_ONLY`), return/cancellation only (`HEMPIN_ONLY`), and combined delivery plus return (`HAISO_HEMPIN`). This allows the same method to serve multiple phases of a broadband contract lifecycle — initial equipment delivery, contract cancellation return, and combined plan changes involving both equipment swap and new delivery.

The method implements a **conditional delegation pattern**: it first determines whether delivery should be suppressed based on the construction project status (kojiStat). For E-PON to GE-PON upgrades (IDO_DIV="00067") or address-change scenarios, it performs detailed status checks that may suppress delivery orders (e.g., if the construction project is already in "installation scheduled" state). This prevents unnecessary delivery orders from being created for cases where equipment is already allocated.

Its **role in the larger system** is as a logistics context builder — a shared utility method within `JKKTelnoInfoAddCC` called by `executeHtelTelnoAdd()` during the telephone number addition screen flow (KKSV0004). It prepares the data payload and routes to the central logistics controller, which then orchestrates the actual shipping/return order creation.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["buturyuCtrlTran"])
    START --> INIT["Initialize buturyu_ctrl_cc_trgt_data and trgt_data_list"]
    INIT --> SETFIELDS["Set ido_div, adchg_ido_div, sysid, svc_kei_no, prc_grp_cd, mskm_dtl_no"]
    SETFIELDS --> SVC_CHK{svc_kei_no_net == null?}
    SVC_CHK -->|true| USE_ORIG["Set svc_kei_no from trgtData"]
    SVC_CHK -->|false| USE_NET["Set svc_kei_no to svc_kei_no_net BBR return"]
    USE_ORIG --> GET_HAISOKIKI["Get haiso_kiki from trgtData or fallback to bf_va_chg_kktk_svc_kei_no"]
    USE_NET --> GET_HAISOKIKI
    GET_HAISOKIKI --> HAIKO_CHK{haiso_kiki not null?}
    HAIKO_CHK -->|false| HAIKO_SKIP["Skip delivery skip logic"]
    HAIKO_CHK -->|true| IDO_CHK{idoDiv not null and not 00019?}
    IDO_CHK -->|true| FUNC2["Call EKU0081B020_FUNC2 service"]
    IDO_CHK -->|false| FUNC2_SKIP["Skip FUNC2 block"]
    FUNC2 --> FUNC2_CHK{rsltMsg length greater than 0?}
    FUNC2_CHK -->|true| FUNC2_GET["Get kojiStat and kojiakNo"]
    FUNC2_CHK -->|false| FUNC2_SKIP2["Skip FUNC2 inner block"]
    FUNC2_GET --> KOJIAK_CHK{kojiakNo not null?}
    KOJIAK_CHK -->|true| EKU0011["Call EKU0011A010 service for kojiakNo"]
    KOJIAK_CHK -->|false| KOJIAK_SKIP["Skip EKU0011"]
    EKU0011 --> GET_KOJI_DIV["Get kojiUkOptntyIdoDiv from result"]
    GET_KOJI_DIV --> TYPE67{kojiUkOptntyIdoDiv equals 00067?}
    TYPE67 -->|true| TYPE67_CHK{kojiStat between 130 and 170?}
    TYPE67_CHK -->|true| DUP_CHK{No same msg EKBE198--I?}
    DUP_CHK -->|true| ADD_ERR1["Add errInfo EKBE198--I"]
    DUP_CHK -->|false| DUP_SKIP1["Skip"]
    TYPE67_CHK -->|false| TYPE67_SKIP["Skip"]
    TYPE67 -->|false| TYPE67_FALSE_SKIP["Skip"]
    FUNC2_SKIP --> EKU0081["Call EKU0081B020 main service"]
    FUNC2_SKIP2 --> EKU0081
    TYPE67_SKIP --> EKU0081
    KOJIAK_SKIP --> EKU0081
    TYPE67_FALSE_SKIP --> EKU0081
    EKU0081_CHK{rsltMsg length greater than 0?}
    EKU0081 --> EKU0081_CHK
    EKU0081_CHK -->|true| EKU0081_GET["Get kojiStat and kojiakNo"]
    EKU0081_CHK -->|false| MAIN_SKIP["Skip main inner block"]
    EKU0081_GET --> KOJIAK2_CHK{kojiakNo not null?}
    KOJIAK2_CHK -->|true| EKU0011_2["Call EKU0011A010 service"]
    KOJIAK2_CHK -->|false| EKU0011_2_SKIP["Skip"]
    EKU0011_2 --> GET_DIV2["Get kojiUkOptntyIdoDiv"]
    EKU0011_2_SKIP --> GET_DIV2
    GET_DIV2 --> TYPE_CHK{kojiUkOptntyIdoDiv not null and not empty and not 00019?}
    TYPE_CHK -->|true| STAT_CHK{kojiStat between 130 and 170?}
    TYPE_CHK -->|false| STAT_SKIP["Keep haiso_kiki"]
    STAT_CHK -->|true| SET_NULL["Set haiso_kiki to null skip delivery"]
    STAT_CHK -->|false| STAT_SKIP2["Keep haiso_kiki"]
    MAIN_SKIP --> SET_HAI_SO
    STAT_SKIP --> SET_HAI_SO
    STAT_SKIP2 --> SET_HAI_SO
    SET_NULL --> SET_HAI_SO
    SET_HAI_SO["Set haiso_kktk_svc_kei_no and hempin_kktk_svc_kei_no by mode"]
    SET_HAI_SO --> MODE_CHK{haisohmpin value?}
    MODE_CHK -->|HEMPIN_ONLY equals 2| MODE_H["haiso null, hempin bf_va_chg"]
    MODE_CHK -->|HAISO_ONLY equals 1| MODE_A["haiso haiso_kiki, hempin null"]
    MODE_CHK -->|HAISO_HEMPIN equals 3| MODE_B["haiso haiso_kiki, hempin bf_va_chg"]
    MODE_CHK -->|other| MODE_N["haiso null, hempin null"]
    MODE_H --> ADD_MODEL["Set taknkiki_model_cd"]
    MODE_A --> ADD_MODEL
    MODE_B --> ADD_MODEL
    MODE_N --> ADD_MODEL
    ADD_MODEL --> SET_PARAM["param.setData buturyu_ctrl_cc_trgt_data"]
    SET_PARAM --> CALL_BUT["JKKButuryuCtrlCC.buturyuCtrlTran"]
    CALL_BUT --> RETURN["Return trgt_data_list_element"]
    RETURN --> END_NODE(["End"])
    HAIKO_SKIP --> SET_HAI_SO
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `handle` | `SessionHandle` | Session handle carrying session manager and contextual state for service invocations |
| 2 | `param` | `IRequestParameterReadWrite` | Request parameter interface used to read input values and write the prepared `buturyu_ctrl_cc_trgt_data` payload before delegating to the logistics controller |
| 3 | `trgtData` | `HashMap<String, Object>` | Target data map containing source business fields (ido_div, svc_kei_no, kktk_svc_kei_no, taknkiki_model_cd, etc.) extracted from the screen request |
| 4 | `outMapEKK0081A010` | `CAANMsg` | Service contract unique inquiry result — contains pricing group code (PRC_GRP_CD) used for billing classification in logistics context |
| 5 | `mskmDtlNo` | `String` | Order detail number — uniquely identifies the line item within a customer order for which logistics is being configured |
| 6 | `bf_va_chg_kktk_svc_kei_no` | `String` | Pre-VAS change equipment provision subscription number — the old service contract number before a Virtual Access (VA) equipment change, used as the return equipment identifier |
| 7 | `svc_kei_no_net` | `String` | Net service contract number — the new subscription number assigned to the line. If null, the original `trgtData` service number is used. This parameter exists to support BBR (Broadband Return) scenarios where a cancelled route's new subscription number must be set |
| 8 | `haisohmpin` | `int` | Logistics mode flag controlling delivery vs. return behavior. Values: HAISO_ONLY (1) = delivery only, HEMPIN_ONLY (2) = return/cancellation only, HAISO_HEMPIN (3) = both delivery and return, other = neither |

**Instance fields read by this method:**
- `telInfoMapper` — mapper object used to build input maps for service calls (EKU0081B020, EKU0011A010)

## 4. CRUD Operations / Called Services

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | `telInfoMapper.editInMsgEKU0081B020_FUNC2` | EKU0081B020SC | Construction project info | Builds input message for latest basic project detail inquiry (FUNC2 variant for multi-function router scenarios) |
| - | `callSvcInter(handle, param, inMap)` | Various CBS | - | Generic service interceptor — invokes downstream CBS services with prepared input maps |
| R | `EKU0081B020CBSMsg1List.getString(KOJIAK_STAT)` | EKU0081B020CBS | KK_T_KOJIAK (construction project) | Reads construction project status code from service response |
| R | `EKU0081B020CBSMsg1List.getString(KOJIAK_NO)` | EKU0081B020CBS | KK_T_KOJIAK | Reads construction project number from service response |
| R | `EKU0011A010CBSMsg1List.getString(KOJI_UK_OPTNTY_IDO_DIV)` | EKU0011A010CBS | KK_T_KOJIAK | Reads construction project agreement change type migration division code |
| - | `telInfoMapper.editInMsgEKU0081B020` | EKU0081B020SC | Construction project info | Builds input message for latest basic project detail inquiry (main flow) |
| - | `telInfoMapper.editInMsgEKU0011A010` | EKU0011A010SC | Construction project agreement | Builds input message for construction project agreement inquiry |
| - | `JKKButuryuCtrlCC.buturyuCtrlTran` | JKKButuryuCtrlCBS | Logistics/order tables | Delegates to central logistics controller for delivery/return order orchestration |
| - | `param.setData` | - | - | Writes prepared logistics target data into request parameter for downstream consumption |

**Note:** The SC Codes are inferred from the CBS message names (EKU0081B020CBS, EKU0011A010CBS) which follow the convention where the prefix code maps to a service component. The exact SC Code class names may be `EKU0081B020SC` and `EKU0011A010SC` respectively.

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | JKKTelnoInfoAddCC.executeHtelTelnoAdd | `executeHtelTelnoAdd` -> `JKKTelnoInfoAddCC.buturyuCtrlTran` | `JKKButuryuCtrlCC.buturyuCtrlTran [-]`, `callSvcInter [-]`, `setData [-]`, `editInMsgEKU0081B020 [-]`, `editInMsgEKU0011A010 [-]`, `editInMsgEKU0081B020_FUNC2 [-]` |

**Note:** `JKKTelnoInfoAddCC.executeHtelTelnoAdd()` is the direct caller of this method within the same class, invoked during the telephone number addition flow. The method is not a screen entry point itself but a shared utility method within the telno info addition component.

## 6. Per-Branch Detail Blocks

### Block 1 — SET (L8329)
> Initialize logistics control target data structure

| # | Type | Code |
|---|------|------|
| 1 | SET | `buturyu_ctrl_cc_trgt_data = new HashMap<String, Object>()` // create root target map |
| 2 | SET | `trgt_data_list = new ArrayList<HashMap<String, Object>>()` // create list element |
| 3 | SET | `buturyu_ctrl_cc_trgt_data.put("trgt_data_list", trgt_data_list)` // link list to root |
| 4 | SET | `trgt_data_list_element = new HashMap<String, Object>()` // create single element |
| 5 | SET | `trgt_data_list.add(trgt_data_list_element)` // add element to list |

### Block 2 — SET (L8333-8350)
> Populate basic logistics fields into the target data element

| # | Type | Code |
|---|------|------|
| 1 | SET | `trgt_data_list_element.put("ido_div", trgtData.get(IDO_DIV))` // migration division |
| 2 | SET | `trgt_data_list_element.put("adchg_ido_div", trgtData.get(ADCHG_IDO_DIV))` // address-change migration division |
| 3 | SET | `trgt_data_list_element.put("sysid", trgtData.get(SYSID))` // system ID |
| 4 | SET | `trgt_data_list_element.put("svc_kei_no", trgtData.get(SVC_KEI_NO))` // service contract number |
| 5 | SET | `trgt_data_list_element.put("prc_grp_cd", getRsltMsgListValue(outMapEKK0081A010, EKK0081A010CBSMSG1LIST, PRC_GRP_CD))` // pricing group code from service contract inquiry |
| 6 | SET | `trgt_data_list_element.put("mskm_dtl_no", mskmDtlNo)` // order detail number |

### Block 3 — IF / ELSE (svc_kei_no resolution) (L8352-8358)
> Resolve service contract number — use net number for BBR (broadband return) scenarios

| # | Type | Code |
|---|------|------|
| 1 | IF | `svc_kei_no_net == null` |
| 2 | SET | `trgt_data_list_element.put("svc_kei_no", trgtData.get(SVC_KEI_NO))` // use original from trgtData |
| 3 | ELSE | `svc_kei_no_net != null` |
| 4 | SET | `trgt_data_list_element.put("svc_kei_no", svc_kei_no_net)` // use net number — callout: BBR return path, sets net service contract number |

### Block 4 — IF (haiso_kiki availability check) (L8365-8465)
> If a delivery device exists (haiso_kiki not null), check construction project status to decide whether to suppress delivery orders

| # | Type | Code |
|---|------|------|
| 1 | IF | `!isNull(haiso_kiki)` [L8365] — haiso_kiki holds the delivery equipment's service contract number |
| 2 | SET | `idoDiv = (String)trgtData.get(IDO_DIV)` // migration division |
| 3 | IF | `(idoDiv != null && !"".equals(idoDiv)) && !IDO_DIV_ADCHGADD.equals(idoDiv)` [L8369-8371] — only process for non-null migration division and NOT "00019" (address change add) |
| 4 | CALL | `inMapEKU0081B020_FUNC2 = telInfoMapper.editInMsgEKU0081B020_FUNC2(param, trgtData, SVC_KEI_NO, SVC_KEI_KAISEN_UCWK_NO)` // build FUNC2 input map |
| 5 | CALL | `outMapEKU0081B020_FUNC2 = callSvcInter(handle, param, inMapEKU0081B020_FUNC2)` // invoke service |
| 6 | SET | `rsltMsgEKU0081B020_FUNC2List = outMapEKU0081B020_FUNC2.getCAANMsgList(EKU0081B020CBSMSG1LIST)` |
| 7 | IF | `rsltMsgEKU0081B020_FUNC2List != null && length > 0` |
| 8 | SET | `rsltMsgEKU0081B020_FUNC2 = rsltMsgEKU0081B020_FUNC2List[0]` |
| 9 | SET | `kojiStat = rsltMsgEKU0081B020_FUNC2.getString(KOJIAK_STAT)` // construction project status |
| 10 | SET | `kojiUkOptntyIdoDiv = ""` // construction project agreement migration division |
| 11 | SET | `kojiakNo = rsltMsgEKU0081B020_FUNC2.getString(KOJIAK_NO)` // construction project number |
| 12 | IF | `!isNull(kojiakNo)` [L8389] — construction project number exists |
| 13 | CALL | `inMapEKU0011A010 = telInfoMapper.editInMsgEKU0011A010(param, kojiakNo)` // build agreement inquiry input |
| 14 | CALL | `outMapEKU0011A010 = callSvcInter(handle, param, inMapEKU0011A010)` |
| 15 | SET | `rsltMsgEKU0011A010List = outMapEKU0011A010.getCAANMsgList(EKU0011A010CBSMSG1LIST)` |
| 16 | SET | `rsltMsgEKU0011A010 = rsltMsgEKU0011A010List[0]` |
| 17 | SET | `kojiUkOptntyIdoDiv = rsltMsgEKU0011A010.getString(KOJI_UK_OPTNTY_IDO_DIV)` |
| 18 | IF | `"00067".equals(kojiUkOptntyIdoDiv)` [L8413] — E-PON to GE-PON migration type |
| 19 | IF | `kojiStat != null && CD00474_130.compareTo(kojiStat) <= 0 && CD00474_170.compareTo(kojiStat) >= 0` [L8416] — status between 130 (contract accepted) and 170 (equipment registration scheduled) inclusive |
| 20 | IF | `!hasSameMsgId(param, trgtData, "EKBE198--I")` [L8418] // no duplicate message already added |
| 21 | CALL | `addErrInfo(trgtData, "EKBE198--I", "Multi-function router, Direct-to-customer", null, KKOKU_FLG_KKOKU)` // add error: multi-function router direct-to-customer not available for contracted/allocated state |
| 22 | END | Inner blocks close |
| 23 | END | All FUNC2 nested blocks close |
| 24 | END | Non-00019 migration division block |
| 25 | CALL | `inMapEKU0081B020 = telInfoMapper.editInMsgEKU0081B020(param, trgtData, SVC_KEI_NO, SVC_KEI_KAISEN_UCWK_NO)` // build main flow input map |
| 26 | CALL | `outMapEKU0081B020 = callSvcInter(handle, param, inMapEKU0081B020)` |
| 27 | SET | `rsltMsgEKU0081B020List = outMapEKU0081B020.getCAANMsgList(EKU0081B020CBSMSG1LIST)` |
| 28 | IF | `rsltMsgEKU0081B020List != null && length > 0` [L8438] |
| 29 | SET | `rsltMsgEKU0081B020 = rsltMsgEKU0081B020List[0]` |
| 30 | SET | `kojiStat = rsltMsgEKU0081B020.getString(KOJIAK_STAT)` |
| 31 | SET | `kojiUkOptntyIdoDiv = ""` |
| 32 | SET | `kojiakNo = rsltMsgEKU0081B020.getString(KOJIAK_NO)` |
| 33 | IF | `!isNull(kojiakNo)` [L8447] |
| 34 | CALL | `inMapEKU0011A010 = telInfoMapper.editInMsgEKU0011A010(param, kojiakNo)` |
| 35 | CALL | `outMapEKU0011A010 = callSvcInter(handle, param, inMapEKU0011A010)` |
| 36 | SET | `rsltMsgEKU0011A010List = outMapEKU0011A010.getCAANMsgList(EKU0011A010CBSMSG1LIST)` |
| 37 | IF | `rsltMsgEKU0081B020List != null && length > 0` (inner null check, L8454) |
| 38 | SET | `rsltMsgEKU0011A010 = rsltMsgEKU0011A010List[0]` |
| 39 | SET | `kojiUkOptntyIdoDiv = rsltMsgEKU0011A010.getString(KOJI_UK_OPTNTY_IDO_DIV)` |
| 40 | IF | `(kojiUkOptntyIdoDiv != null && !"".equals(kojiUkOptntyIdoDiv)) && !IDO_DIV_ADCHGADD.equals(kojiUkOptntyIdoDiv)` [L8467-8469] — non-null, non-empty, and NOT "00019" address-change-add |
| 41 | IF | `kojiStat != null && "130".compareTo(kojiStat) <= 0 && "170".compareTo(kojiStat) >= 0` [L8472] — status between 130 (contract accepted) and 170 (equipment scheduled) inclusive |
| 42 | SET | `haiso_kiki = null` // set to null to skip delivery creation |

### Block 5 — IF / ELSE-IF / ELSE (haisohmpin mode dispatch) (L8481-8512)
> Set delivery and return equipment subscription numbers based on the logistics mode flag

| # | Type | Code |
|---|------|------|
| 1 | IF | `haisohmpin == HEMPIN_ONLY (2)` [L8481] — return (delivery cancellation) only |
| 2 | SET | `trgt_data_list_element.put("haiso_kktk_svc_kei_no", null)` // no delivery equipment |
| 3 | SET | `trgt_data_list_element.put("hempin_kktk_svc_kei_no", bf_va_chg_kktk_svc_kei_no)` // return equipment = old VA service number |
| 4 | ELSE-IF | `haisohmpin == HAISO_ONLY (1)` [L8487] — delivery only |
| 5 | SET | `trgt_data_list_element.put("haiso_kktk_svc_kei_no", haiso_kiki)` // delivery equipment = resolved haiso_kiki |
| 6 | SET | `trgt_data_list_element.put("hempin_kktk_svc_kei_no", null)` // no return equipment |
| 7 | ELSE-IF | `haisohmpin == HAISO_HEMPIN (3)` [L8493] — both delivery and return |
| 8 | SET | `trgt_data_list_element.put("hempin_kktk_svc_kei_no", bf_va_chg_kktk_svc_kei_no)` // return equipment = old VA service number |
| 9 | SET | `trgt_data_list_element.put("haiso_kktk_svc_kei_no", haiso_kiki)` // delivery equipment = haiso_kiki |
| 10 | ELSE | default [L8499] — neither delivery nor return |
| 11 | SET | `trgt_data_list_element.put("haiso_kktk_svc_kei_no", null)` |
| 12 | SET | `trgt_data_list_element.put("hempin_kktk_svc_kei_no", null)` |

### Block 6 — SET (L8518-8520)
> Add the indoor equipment model code to the target data element

| # | Type | Code |
|---|------|------|
| 1 | SET | `trgt_data_list_element.put("taknkiki_model_cd", trgtData.get(TAKNKIKI_MODEL_CD))` // indoor equipment model code for logistics |

### Block 7 — EXEC (L8522)
> Write the prepared logistics target data into the request parameter

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `param.setData("buturyu_ctrl_cc_trgt_data", buturyu_ctrl_cc_trgt_data)` |

### Block 8 — EXEC (L8525-8526)
> Delegate to the central logistics controller for actual logistics workflow

| # | Type | Code |
|---|------|------|
| 1 | SET | `buturyuCtrlCc = new JKKButuryuCtrlCC()` // instantiate logistics controller |
| 2 | CALL | `buturyuCtrlCc.buturyuCtrlTran(handle, param, "buturyu_ctrl_cc_trgt_data")` // execute logistics control |

### Block 9 — RETURN (L8528)
> Return the constructed target data element

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

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `buturyuCtrlTran` | Method | Logistics control transaction — orchestrates delivery and return order processing for telecom equipment |
| `ido_div` | Field | Migration division — classifies the type of contract change (e.g., new registration, cancellation, address change) |
| `adchg_ido_div` | Field | Address-change migration division — specific migration type for address change scenarios |
| `svc_kei_no` | Field | Service contract number — unique identifier for a subscription line in the K-Opticom billing system |
| `svc_kei_no_net` | Field | Net service contract number — the new subscription number assigned to a line, used in BBR (broadband return) scenarios |
| `kktk_svc_kei_no` | Field | Equipment provision service contract number — the subscription number associated with delivered equipment |
| `mskm_dtl_no` | Field | Order detail number — uniquely identifies a line item within a customer order |
| `bf_va_chg_kktk_svc_kei_no` | Field | Pre-VAS-change equipment provision subscription number — the old service contract number before a Virtual Access equipment change, used as return equipment identifier |
| `haisohmpin` | Field | Delivery/return mode flag — controls whether the method performs delivery (haishin), return (haisen), or both |
| `haiso_kktk_svc_kei_no` | Field | Delivery equipment provision subscription number — the service contract number for the equipment being delivered |
| `hempin_kktk_svc_kei_no` | Field | Return equipment provision subscription number — the service contract number for the equipment being returned |
| `haiso_kiki` | Field | Delivery device identifier — holds the equipment service contract number; if null, delivery is suppressed |
| `kojiStat` | Field | Construction project status — status code of the installation/construction project (130=accepted, 170=equipment scheduled) |
| `kojiakNo` | Field | Construction project number — unique identifier for a construction project in the system |
| `kojiUkOptntyIdoDiv` | Field | Construction project agreement change type migration division — classifies the type of construction agreement change |
| `taknkiki_model_cd` | Field | Indoor equipment model code — identifies the model of the customer-premises equipment being delivered |
| `prc_grp_cd` | Field | Pricing group code — billing classification code used to determine pricing structure |
| IDO_DIV_ADCHGADD | Constant | "00019" — Address change addition migration division type |
| CD00474_130 | Constant | "130" — Construction project status: contract accepted (jukujyu) |
| CD00474_170 | Constant | "170" — Construction project status: indoor equipment registration scheduled (yotei touroku) |
| HAISO_ONLY | Constant | 1 — Logistics mode: delivery only |
| HEMPIN_ONLY | Constant | 2 — Logistics mode: return (delivery cancellation) only |
| HAISO_HEMPIN | Constant | 3 — Logistics mode: both delivery and return |
| EKBE198--I | Error message | "Multi-function router, Direct-to-customer" — error indicating that multi-function routers cannot be directly delivered when the construction project is in contracted/allocated state |
| EKU0081B020CBS | SC Code | Latest basic project detail inquiry service — retrieves construction project information |
| EKU0011A010CBS | SC Code | Construction project agreement inquiry service — retrieves agreement change migration type |
| E-PON to GE-PON | Business term | Type "00067" — Migration from E-PON to GE-PON network, requiring special delivery suppression logic |
| BBR | Acronym | Broadband Return — scenario where a cancelled route needs a new subscription number |
| VA | Acronym | Virtual Access — equipment associated with a subscription line |
| FJ | Abbreviation | Fujitsu — the systems integrator (appears in copyright headers) |
