
# Business Logic — JKKWrisvcAutoAplyCC.delKojihiKapCp() [932 LOC]

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

## 1. Role

### JKKWrisvcAutoAplyCC.delKojihiKapCp()

This method is a critical eligibility filter for standard construction cost equivalent amount discount coupons (工事費相当額割引CP) in a Japanese telecommunications contract management system. It runs immediately **before** a service registration operation (`addWribsvkDchskmst`) to determine which discount coupon entries in the target list should be excluded (removed) and which should proceed to registration.

The method handles two primary service types: Net (KOO) and Telephone (DENWA) standard construction cost discount coupons, classified by service code constants (`WRIB_SVC_KOJIHI_KAP_CP_NET`, `WRIB_SVC_KOJIHI_KAP_CP_TEL`, and their extended variants). It implements a routing/dispatch pattern — first performing early-exit guards (non-writable service, external integration view, address-change completion), then conducting a multi-pass eligibility evaluation across several business rule categories.

The method's role in the larger system is as a **gatekeeper**: it prevents invalid, duplicate, or conflicting discount coupon registrations by examining the current campaign state, existing applied coupons, service contract statuses (Net, Telephone, TV), change classification codes (cancellation, dispose, recovery, merge, split, plan change, etc.), and historical discount patterns. It also handles cancel/revoke record creation for situations where previously applied discounts need to be cancelled due to contract changes.

Conditional branches cover: (1) WRIB flag gate — only processes writable services; (2) External integration gate — removes all net/tel CPs when called from KKA182 provider registration; (3) Address change gate — cancels and removes CPs when address change is confirmed; (4) New campaign eligibility — validates campaign start dates and plan type matching; (5) Existing CP conflict — prevents applying new coupons when a standard discount (標準工事費割引CP) already exists; (6) Cancel processing — creates cancellation records when registered discounts must be revoked; (7) Tel-only service exclusion — excludes tel CPs when the customer has a standalone telephone service; (8) Final registration gate — verifies no previously applied same-type coupon exists.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["delKojihiKapCp call"])

    START --> L1["L15438-15443: Get svcKeiGrpList, find standard map, get stdardMap"]

    L1 --> C1{"C1: isFlagWrib(flg)?"}
    C1 -->|false| EARLY_RETURN1["L15445: Return — not a writable service"]
    C1 -->|true| L2["L15450-15451: Check REQ_VIEWID == KKA182001PJP"]

    L2 --> C2{"C2: REQ_VIEWID == KKA182001PJP?"}
    C2 -->|true| L3["L15455-15473: Remove net/tel KOJIHI_KAP_CP from tgList, return"]
    C2 -->|false| L4["L15480-15481: Get baseSvcKeiNo, call kk0241B004"]

    L4 --> C3{"C3: kk0241B004 == null?"}
    C3 -->|true| EARLY_RETURN2["L15484: Return — mapper result null"]
    C3 -->|false| L5["L15487-15504: Extract kapKeiStat, svcKeiStat, kojihiKapCp fields, addChgeDiv, idoDiv, mskmNo"]

    L5 --> L6["L15508-15515: Get mskmYmd, kojihiKapOperateStat"]
    L6 --> C4{"C4: kojihiKapOperateStat == 2?"}
    C4 -->|true| L6A["L15514: Set kapKeiStat = empty — clearing discount status"]
    C4 -->|false| L7["L15523-15524: Compute renban=0, calcRenbanDigitSize"]
    L6A --> L7

    L7 --> C5{"C5: kojihiKapAdchgDiv not blank?"}
    C5 -->|true| L8["L15530-15552: Call addChgNoDtl, if success remove net/tel CP from tgList, return"]
    C5 -->|false| C6{"C6: digitSize == 0?"}

    L8 --> EARLY_RETURN3["Return — address change completed, CP excluded"]
    C6 -->|true| EARLY_RETURN4["Return — no items to process"]
    C6 -->|false| L9["L15558: callEKK0081B029(baseSvcKeiNo)"]

    L9 --> L10["L15561-15563: Init svcKeiNoList, svcKeiKaisenUcwkNo, gene vars"]
    L10 --> L11["L15571-15602: Loop ekk0081B029List — get svcKeiNo, callSvcKeiIchiiShokai"]
    L11 --> C7{"C7: svcCd == CD00130_01 or CD00130_02?"}
    C7 -->|no| L11["Loop next"]
    C7 -->|yes| L11B["Add svcKeiNo to list, get gene, track max gene"]

    L11B --> L12["L15611-15651: Find latest kojihiCpWribSvcCd from callEKK0451B012ToAll"]
    L12 --> L13["L15654-15657: Get newCpNetStaymd, newCpTelStaymd, mskmYmdNet, mskmYmdTel"]

    L13 --> L14["L15662-15753: Loop tgList — eligibility check for each CP"]
    L14 --> C8{"C8: ALL_KOJIHI_CP_LIST contains wribSvcCd?"}
    C8 -->|no| L15["Skip to next item"]
    C8 -->|yes| C9{"C9: New campaign?"}
    C9 -->|yes| C10{"C10: hasValidKapPlan?"}
    C10 -->|no| REMOVE_CP["Remove CP from tgList"]
    C10 -->|yes| C11{"C11: KOJIHI_CP_NET_LIST?"}
    C11 -->|Staymd <= mskmYmd| REMOVE_CP
    C11 -->|no| C12{"C12: KOJIHI_CP_TEL_LIST?"}
    C12 -->|Staymd <= mskmYmd| REMOVE_CP
    C12 -->|no| L15
    C9 -->|no| C13{"C13: Existing CP"}
    C13 --> C14{"C14: HYOJUN_KOJIHI_WRBK_CP?"}
    C14 -->|yes| REMOVE_CP
    C14 -->|no| C15{"C15: isSameTypeKojihiCp?"}
    C15 -->|no| REMOVE_CP
    C15 -->|yes| L15

    L15 --> L16["L15757-15818: Loop tgList — process CP cancellation"]
    L16 --> C16{"C16: ALL_KOJIHI_CP_LIST contains wribSvcCd?"}
    C16 -->|yes| C17{"C17: isAplyZm (finished)?"}
    C17 -->|yes| REMOVE_CP2["Remove CP — already applied"]
    C17 -->|no| L16A["Continue"]
    C16 -->|no| L16A

    L16A --> L17["L15825-16130: Branch per wribSvcCd type"]
    L17 --> C18{"C18: KOJIHI_CP_NET_LIST?"}
    C18 -->|yes| L17A["Handle Net CP"]
    C18 -->|no| C19{"C19: KOJIHI_CP_TEL_LIST?"}
    C19 -->|yes| L17B["Handle Tel CP"]
    C19 -->|no| L15B["Skip"]

    L17A --> C20{"C20: operateStat set?"}
    C20 -->|yes| C21{"C21: kapKeiStat empty/DISPOSED/CANCEL?"}
    C21 -->|yes| REMOVE_CP2
    C21 -->|no| C22{"C22: isTelTandoku + isTelTandoku2?"}
    C22 -->|yes| REMOVE_CP2
    C22 -->|no| C23{"C23: existing CP == IKKT?"}
    C23 -->|yes| REMOVE_CP2
    C23 -->|no| KEEP_CP["Keep — eligible"]

    L17B --> C24{"C24: operateStat set?"}
    C24 -->|yes| C25{"C25: kapKeiStat accepted/processing/cancel/done?"}
    C25 -->|yes| C26{"C26: isTelTandoku + isTelTandoku2?"}
    C26 -->|yes| REMOVE_CP2
    C26 -->|no| C27{"C27: svcNet active + not IKKT?"}
    C27 -->|yes| REMOVE_CP3["Remove CP — service active"]
    C27 -->|no| C28{"C28: Tel+Tv + same seikyKeiNo?"}
    C28 -->|no| REMOVE_CP3
    C28 -->|yes| L15B
    C25 -->|no| REMOVE_CP2

    L15B --> L18["L16055-16130: Branch by addChgeDiv"]
    L18 --> C29{"C29: NOT cancel/dispose/change?"}
    C29 -->|yes| L18A["L16058-16099: getKojihiKapCpNew check"]
    L18A --> C30{"C30: max CP matches OR applied?"}
    C30 -->|yes| REMOVE_CP2
    C30 -->|no| KEEP_CP2["Keep — eligible"]
    C29 -->|no| L18B["L16102-16129: Check past amount CP"]
    L18B --> C31{"C31: wribSvcCdMax blank?"}
    C31 -->|yes| REMOVE_CP2
    C31 -->|no| KEEP_CP2

    KEEP_CP --> C32{"C32: Tel CP stat + addChgeDiv?"}
    KEEP_CP2 --> C32
    REMOVE_CP2 --> L19
    REMOVE_CP3 --> L19

    C32 -->|net Tel active + NOT KAIHK| L20["L16134-16238: Cancel Tel CP when adding Net CP"]
    L20 --> L21["Loop tgList + wribsvkDchskmstList — create DslCncl"]

    L21 --> END(["Return void"])

    EARLY_RETURN1 --> END
    EARLY_RETURN2 --> END
    EARLY_RETURN3 --> END
    EARLY_RETURN4 --> END
    REMOVE_CP --> L15
    REMOVE_CP2 --> L15
    REMOVE_CP3 --> L15
```

**Branch constant resolution:**

| Constant | Actual Value | Business Meaning |
|----------|-------------|-----------------|
| `WRIB_SVC_KOJIHI_KAP_CP_NET` | Net coupon code | Standard construction cost equivalent amount discount coupon (Net service) |
| `WRIB_SVC_KOJIHI_KAP_CP_TEL` | Tel coupon code | Standard construction cost equivalent amount discount coupon (Telephone service) |
| `ALL_KOJIHI_CP_LIST` | Collection of Net+Tel codes | Unified list of all standard construction cost discount CP codes |
| `KOJIHI_CP_NET_LIST` | Subset of net codes | Net-only construction cost discount CP codes |
| `KOJIHI_CP_TEL_LIST` | Subset of tel codes | Telephone-only construction cost discount CP codes |
| `HYOJUN_KOJIHI_WRBK_CP_LIST` | Standard discount codes | Standard construction cost discount (not equivalent amount) CP codes |
| `WRIB_SVC_KOJIHI_KAP_CP_TEL_IKT` | `W10000147` | Telephone one-time uniform CP (一括CP) |
| `CD00130_01` | Net service code | Net service type |
| `CD00130_02` | Tel service code | Telephone service type |
| `CD00055_APLYZM` | Applied/completed | Service discount contract status: applied |
| `CD00055_DSLZM` | Disposed | Service discount contract status: disposed |
| `CD00055_CSLZM` | Cancelled | Service discount contract status: cancelled |
| `CD00055_UKZM` | Unaccepted | Service discount contract status: unaccepted |
| `CD00055_SVCTK_CHU` | In service | Service discount contract status: in service provision |
| `CD01471_DSL_ZM` | Disposed | Discount contract status: disposed |
| `CD01471_CANCEL_ZM` | Cancelled | Discount contract status: cancelled |
| `CD01471_UK_ZM` | Unaccepted | Discount contract status: unaccepted |
| `CD01471_SHOSA_ZUMI` | Processing | Discount contract status: processing |
| `CD01471_CNC_ZM` | Cancellation | Discount contract status: cancellation |
| `CD01471_KANRYOU_ZM` | Completed | Discount contract status: completed |
| `CD00037_UK_ZM` | Unaccepted | Service contract status: unaccepted |
| `CD00037_SHOSA_ZUMI` | Processing | Service contract status: processing |
| `CD00037_CNC_ZM` | Cancellation | Service contract status: cancellation |
| `CD00037_SVCTK_CHU` | In service | Service contract status: in service provision |
| `CD01390_CL_TEISE` | Order correction | Service cancellation reason code: order correction |
| `SVC_CANCEL_RSN_CD_OTHER` | Other reason | Service cancellation reason: other |
| `SVC_DLRE_CD_TUJYO_DSL` | Normal cancellation | Service termination reason code: normal cancellation |
| `ADD_CHGE_DIV_KAIHK` | Recovery change | Registration/change classification: recovery |
| `ADD_CHGE_DIV_CNCL` | Cancellation | Registration/change classification: cancellation |
| `ADD_CHGE_DIV_DSL` | Disposal | Registration/change classification: disposal |
| `KKA182001PJP` | Provider view ID | External integration view for KKA182 (provider new/addition deregistration linkage) |
| `GRP_DIV` | Group division key | Used to locate standard contract service group |
| `WRIB_ADD_JOKEN_CD_STDARD_KEI` | Standard criteria code | Standard criteria code for writable service addition |
| `WRIBSVK_DCHSKMST_GRP_SHOKAI` | Group show prefix | Group identification prefix for service inquiry |
| `WRIBSVK_DCHSKMST_GRP_RLS` | Group release prefix | Group identification prefix for cancellation/release |

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `ccMap` | `HashMap<String, Object>` | Work area (operation context map) carrying service contract data including: service group list, base service detail number, change classification code, modification division, address change division, standard construction cost CP new campaign start dates (net/phone), service detail improvement work number, and operation date. Acts as the primary data carrier shared across all components in the registration flow. |
| 2 | `tgList` | `ArrayList<HashMap<String, Object>>` | Target list of discount coupon entries to be registered. Each entry represents a service discount contract with a `WRIB_SVC_CD` (service coupon code). This method **mutates** the list by removing entries that fail eligibility checks. Net and telephone construction cost discount coupons are the primary targets. |
| 3 | `flg` | `String` | Writable flag indicating whether the service is a WRIB (writable) service. When `isFlagWrib(flg)` returns false, the method returns immediately without processing. Used to gate processing for non-writable contract types. |
| 4 | `funcCd` | `String` | Function code identifying the calling operation context. Passed through to `createWribsvkDchskmstDslCncl` for cancellation record creation. Identifies which functional area triggered this discount coupon eligibility check. |
| 5 | `wribsvkDchskmstList` | `ArrayList<HashMap<String, Object>>` | List of applied service discount contracts (from v37.00.00). Used in the final section when a Net CP is being added — if an existing Tel CP with accepted or in-service status is found, a cancellation record is created for it. Each entry carries a `WRIB_SVC_CD` identifying its coupon type. |

**External/instance fields read by this method:**

| Field | Type | Business Meaning |
|-------|------|-----------------|
| `iRparaReadW` | Instance (mapper accessor) | Provides `getControlMapData` to read request control map (used for `REQ_VIEWID` check) |
| `standerdYmd` | `String` | Standard date used as fallback for `mskmYmd` (contract date) |
| `getMapper()` | Method | Returns mapper component for calling CBS/SC services |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `getMapper().callkk0241B004` | EKK0241B004 | KK_T_SVC_KEI (service contract master) | Reads service contract status fields: kapKeiStat, svcKeiStatNet/Tel/TV, kojihiKapCpKeiNoNet/Tel, kojihiKapCpStatNet/Tel, kapPlanCd, svcKeiKaisenUcwkNo |
| R | `getMapper().callEKK0081B029` | EKK0081B029 | KK_T_SVC_KEI (service contract detail) | Retrieves linked service contract numbers (SVC_KEI_NO) for the base service, used to find related Net/Tel services |
| R | `getMapper().callSvcKeiIchiiShokai` | EKK0081A010 | KK_T_SVC_KEI (service contract master) | Fetches detailed service contract information for each linked service number (returns SVC_CD, GENE_ADD_DTM) |
| R | `getMapper().callEKU0081B070` | EKU0081B070 | KK_T_SVC_KEI_KAISEN (service improvement history) | Reads service improvement history to determine if service has been cancelled/disposed |
| R | `getMapper().callEKK0451B012ToAll` | EKK0451B012 | KK_T_WRIBSVK_DCHSKMST (service discount contract master) | Retrieves all service discount contracts to find the latest standard construction cost discount CP by ADD_DTM |
| R | `getKojihiKapCpNew(ccMap, svcKeiNoList)` | — | KK_T_WRIBSVK_DCHSKMST | Finds the maximum existing discount CP code and status for registration eligibility check |
| C | `createWribsvkDchskmstDslCncl` | — | KK_T_WRIBSVK_DCHSKMST (service discount contract master) | Creates cancellation/disposal records for service discount contracts that need to be revoked |
| C | `addChgNoDtl(ccMap, mskmNo, addChgeDiv, kojihiKapAdchgDiv, baseSvcKeiNo)` | — | KK_T_WRIB_DCHSKMST_DTL (address change detail) | Registers address change detail records; called when address change is confirmed |
| R | `getBaseSvcKeiNo(ccMap, stdardMap)` | — | KK_T_SVC_KEI (service contract master) | Retrieves the base service detail number from the standard service map |
| R | `getSvcStaMskmYmd(ccMap, svcKeiNo)` | — | KK_T_SVC_KEI (service contract master) | Gets the service start/contract date for a given service number |
| - | `isFlagWrib(flg)` | — | — | Checks if the flag indicates a writable service |
| - | `hasValidKapPlan(kapPlanCd, wribSvcCd, mskmYmd)` | — | — | Validates that the campaign plan code and start date match the discount type |
| - | `isSameTypeKojihiCp(kojihiCpWribSvcCd, wribSvcCd)` | — | — | Checks if the existing and new CP codes are of the same type |
| - | `hasFinishKojihiCp(ccMap, baseSvcKeiNo, svcKeiNoList)` | — | — | Determines if a standard construction cost discount CP has already been applied (finished) |
| - | `isTelTandoku(...)` | — | — | Determines if the service is a standalone telephone service (not bundled with Net/TV) |
| - | `isTelTandoku2(ccMap, baseSvcKeiNo, addChgeDiv)` | — | — | Secondary check for standalone telephone during merge/split operations |
| - | `calcRenbanDigitSize(tgList.size())` | — | — | Calculates the digit size for sequence number formatting |
| - | `callSvcKeiIchiiShokai` | EKK0081A010 | KK_T_SVC_KEI | Calls service contract master inquiry (used in cancellation processing) |
| - | `isNullBlank` variants | Various | — | Null/blank validation utilities from multiple service components |
| - | `JCCBPCommon.getOpeDate` | — | — | Returns the current operation date for setting service end dates in cancellation records |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | `JKKWrisvcAutoAplyCC.addWribsvkDchskmst` | `addWribsvkDchskmst(ccMap, tgList, flg, funcCd, wribsvkDchskmstList)` -> `delKojihiKapCp(ccMap, tgList, flg, funcCd, wribsvkDchskmstList)` | `callkk0241B004 [R] KK_T_SVC_KEI`, `callEKK0081B029 [R] KK_T_SVC_KEI`, `callSvcKeiIchiiShokai [R] KK_T_SVC_KEI`, `callEKK0451B012ToAll [R] KK_T_WRIBSVK_DCHSKMST`, `createWribsvkDchskmstDslCncl [C] KK_T_WRIBSVK_DCHSKMST` |

This method is primarily called by `addWribsvkDchskmst()` within the same class `JKKWrisvcAutoAplyCC`, serving as a pre-registration eligibility filter. The caller invokes this method just before committing discount coupon registrations, ensuring only eligible CP entries remain in `tgList`.

## 6. Per-Branch Detail Blocks

**Block 1** — [INITIALIZATION] `(Setup and standard service acquisition)` (L15426)

> Retrieves standard service information from the ccMap work area and prepares for processing.

| # | Type | Code |
|---|------|------|
| 1 | SET | `comWribSvcCd = KKSV0313_KKSV0313OP_KKSV031310SC_EKK0451A010CBSMsg1List.WRIB_SVC_CD` |
| 2 | SET | `comSvcKeiGrpList = KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST` |
| 3 | SET | `comSvcKeiList = KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST` |
| 4 | SET | `svcKeiGrpList = (ArrayList) ccMap.get(comSvcKeiGrpList)` // Standard contract service list |
| 5 | SET | `mapSvcKeiGrp = JKKWrisvcDchskmCommonUtil.getMapFromList(svcKeiGrpList, GRP_DIV, WRIB_ADD_JOKEN_CD_STDARD_KEI)` // Find standard contract map |
| 6 | SET | `svcKeiList = (ArrayList) mapSvcKeiGrp.get(comSvcKeiList)` // Service detail list |
| 7 | SET | `stdardMap = svcKeiList.get(0)` // First element is standard contract |

**Block 2** — [IF] `(isFlagWrib gate — early exit for non-writable services)` (L15444)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `isFlagWrib(flg)` // Check writable flag |
| 2 | RETURN | `return;` // Not WRIB — skip all processing |

**Block 3** — [IF] `(External integration: KKA182 provider registration)` (L15450)

> When called from the external integration view for KKA182 (KKA182: Provider Information Registration Linkage — New/Additional/Disposal), remove all standard construction cost discount CPs from the target list.

| # | Type | Code |
|---|------|------|
| 1 | SET | `REQ_VIEWID = this.iRparaReadW.getControlMapData("REQ_VIEWID")` |
| 2 | IF | `"KKA182001PJP"`.equals(REQ_VIEWID) `[KKA182001PJP = "KKA182001PJP (Provider Registration)"]` |
| 3 | FOR | `i = 0; i < tgList.size(); i++` // Iterate target list |
| 4 | IF | `ALL_KOJIHI_CP_LIST.contains(tgList.get(i).get(comWribSvcCd))` |
| 5 | EXEC | `printlnEjbLog("業務log_除外対象割引サービスコード：" + ...)` // Log excluded coupon |
| 6 | EXEC | `tgList.remove(i); i--;` // Remove from list |
| 7 | RETURN | `return;` // Exit — all CPs excluded for provider registration |

**Block 4** — [IF] `(Mapper result null check)` (L15482)

> After calling `callkk0241B004`, if the result is null, return early.

| # | Type | Code |
|---|------|------|
| 1 | SET | `baseSvcKeiNo = getBaseSvcKeiNo(ccMap, stdardMap)` |
| 2 | SET | `kk0241B004 = getMapper().callkk0241B004(ccMap, baseSvcKeiNo, EKK0241B004_FUNC_CD)` |
| 3 | IF | `kk0241B004 == null` |
| 4 | RETURN | `return;` // Mapper returned null |

**Block 5** — [FIELD EXTRACTION] `(Extract all fields from kk0241B004 result)` (L15487)

| # | Type | Code |
|---|------|------|
| 1 | SET | `kapKeiStat = kk0241B004.get(EKK0241B004CBSMsg1List.KAP_KEI_STAT)` // Discount contract status |
| 2 | SET | `svcKeiStatNet = kk0241B004.get(EKK0241B004CBSMsg1List.SVC_KEI_STAT_NET)` // Service contract status (Net) |
| 3 | SET | `svcKeiStatTel = kk0241B004.get(EKK0241B004CBSMsg1List.SVC_KEI_STAT_TEL)` // Service contract status (Tel) |
| 4 | SET | `svcKeiStatTv = kk0241B004.get(EKK0241B004CBSMsg1List.SVC_KEI_STAT_TV)` // Service contract status (TV) |
| 5 | SET | `seikyKeiNoTel = kk0241B004.get(EKK0241B004CBSMsg1List.SEIKY_KEI_NO_TEL)` // Billing service detail number (Tel) |
| 6 | SET | `seikyKeiNoTv = kk0241B004.get(EKK0241B004CBSMsg1List.SEIKY_KEI_NO_TV)` // Billing service detail number (TV) |
| 7 | SET | `kojihiKapCpKeiNoNet = kk0241B004.get(EKK0241B004CBSMsg1List.KOJIHI_KAP_CP_KEI_NO_NET)` // Discount CP contract number (Net) |
| 8 | SET | `kojihiKapCpKeiNoTel = kk0241B004.get(EKK0241B004CBSMsg1List.KOJIHI_KAP_CP_KEI_NO_TEL)` // Discount CP contract number (Tel) |
| 9 | SET | `kojihiKapCpStatNet = kk0241B004.get(EKK0241B004CBSMsg1List.KOJIHI_KAP_CP_STAT_NET)` // Discount CP status (Net) |
| 10 | SET | `kojihiKapCpStatTel = kk0241B004.get(EKK0241B004CBSMsg1List.KOJIHI_KAP_CP_STAT_TEL)` // Discount CP status (Tel) |
| 11 | SET | `addChgeDiv = ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV)` // Change classification |
| 12 | SET | `idoDiv = ccMap.get(KKSV0313_KKSV0313OP_WORK.IDO_DIV)` // Modification division |
| 13 | SET | `kojihiKapAdchgDiv = ccMap.get(KKSV0313_KKSV0313OP_WORK.KOJIHI_KAP_ADCHG_DIV)` // Address change division |
| 14 | SET | `mskmNo = ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_NO)` // Contract number |
| 15 | SET | `kapPlanCd = kk0241B004.get(EKK0241B004CBSMsg1List.KAP_PLAN_CD)` // Campaign plan code |

**Block 6** — [IF] `(Discount operation status = 2 — clear discount status)` (L15510)

> When the discount contract operation status parameter is "2", the discount status is cleared (set to empty string), indicating the discount is being modified/replaced.

| # | Type | Code |
|---|------|------|
| 1 | SET | `kojihiKapOperateStat = ccMap.get("kojihi_kap_operate_stat")` // Discount contract operation status |
| 2 | IF | `"2".equals(kojihiKapOperateStat)` |
| 3 | SET | `kapKeiStat = ""` // Clear discount contract status |

**Block 7** — [IF] `(kojihiKapOperateStat check for address change)` (L15528)

> When address change is confirmed (`kojihiKapAdchgDiv` is not blank), register the address change detail and remove all net/tel CPs from the target list.

| # | Type | Code |
|---|------|------|
| 1 | IF | `!JKKStringUtil.isNullBlank(kojihiKapAdchgDiv)` `[kojihiKapAdchgDiv = address change division]` |
| 2 | SET | `bol = addChgNoDtl(ccMap, mskmNo, addChgeDiv, kojihiKapAdchgDiv, baseSvcKeiNo)` // Register address change detail |
| 3 | IF | `bol` // Address change detail registered successfully |
| 4 | FOR | `i = 0; i < tgList.size(); i++` // Loop target list |
| 5 | IF | `ALL_KOJIHI_CP_LIST.contains(tgList.get(i).get(comWribSvcCd))` |
| 6 | EXEC | `printlnEjbLog("業務log_除外対象割引サービスコード：" + ...)` // Log |
| 7 | EXEC | `tgList.remove(i); i--;` // Remove CP |
| 8 | RETURN | `return;` // Address change completed, CP excluded |

**Block 8** — [IF] `(digitSize == 0 — no items)` (L15543)

| # | Type | Code |
|---|------|------|
| 1 | SET | `digitSize = calcRenbanDigitSize(tgList.size())` |
| 2 | IF | `digitSize == 0` // No target items |
| 3 | RETURN | `return;` // Exit — no work to do |

**Block 9** — [FOR LOOP] `(Get linked service contracts and build service number list)` (L15558)

> Retrieves all linked service contracts via `callEKK0081B029`, then for each, fetches service details via `callSvcKeiIchiiShokai` and collects Net/Tel service numbers. Also tracks gene (generation) timestamps and cancelled/disposed status from `callEKU0081B070`.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ekk0081B029List = getMapper().callEKK0081B029(baseSvcKeiNo)` // Get linked service contracts |
| 2 | SET | `svcKeiNoList = new ArrayList<String>()` |
| 3 | SET | `svcKeiNoAllList = new ArrayList<String>()` |
| 4 | FOR | `eke0081B029Map in ekk0081B029List` |
| 5 | SET | `renbanNo = WRIBSVK_DCHSKMST_GRP_SHOKAI + String.format(...)` |
| 6 | SET | `svcKeiNo = ekk0081B029Map.getString(EKK0081B029CBSMsg1List.SVC_KEI_NO)` |
| 7 | SET | `sakiSvcKeiMap = getMapper().callSvcKeiIchiiShokai(ccMap, svcKeiNo, SVC_KEI_ICHII_FUNC_CD, renbanNo)` |
| 8 | SET | `svcCd = sakiSvcKeiMap.get(EKK0081A010CBSMsg1List.SVC_CD)` |
| 9 | IF | `!CD00130_01.equals(svcCd) && !CD00130_02.equals(svcCd)` |
| 10 | EXEC | `continue;` // Not Net or Tel |
| 11 | SET | `gene = sakiSvcKeiMap.get(EKK0081A010CBSMsg1List.GENE_ADD_DTM)` |
| 12 | SET | `eKU0081B070List = getMapper().callEKU0081B070(ccMap, svcKeiNo, svcKeiKaisenUcwkNo)` // Service improvement history |
| 13 | IF | `eKU0081B070List == null || length == 0` // Not cancelled/disposed |
| 14 | SET | `svcKeiNoAllList.add(svcKeiNo)` |
| 15 | IF | `CD00130_01.equals(svcCd) && gene > geneMaxNet` → update `geneMaxNet`, `svcKeiNoNetNow` |
| 16 | IF | `CD00130_02.equals(svcCd) && gene > geneMaxTel` → update `geneMaxTel`, `svcKeiNoTelNow` |
| 17 | SET | `svcKeiNoList.add(svcKeiNo)` |

**Block 10** — [SET] `(Find latest standard construction cost discount CP)` (L15611)

> Calls `callEKK0451B012ToAll` to retrieve all discount contracts for collected service numbers, then finds the most recent one by ADD_DTM. Also checks for standard discount (hyojun) CPs and applies additional eligibility rules per v54.00.03 and v60.00.07.

| # | Type | Code |
|---|------|------|
| 1 | IF | `svcKeiNoList.size() > 0` |
| 2 | SET | `ekk0451B012 = getMapper().callEKK0451B012ToAll(ccMap, WRIB_SVC_KEI_FOR_SVC_KEI_NO_ICHII_FUNC_CD, retStringList(svcKeiNoList))` |
| 3 | FOR | `i = 0; i < ekk0451B012.size(); i++` |
| 4 | IF | `ALL_KOJIHI_CP_LIST.contains(ekk0451B012.get(i).get(EKK0451B012CBSMsg1List.WRIB_SVC_CD))` |
| 5 | OR | `HYOJUN_KOJIHI_WRBK_CP_LIST.contains(...)` |
| 6 | IF | `!isNullBlank(kojihiKapOperateStat) && wrib_svc_kei_stat IN {CD00055_APLYZM, CD00055_DSLZM, CD00055_CSLZM}` |
| 7 | EXEC | `continue;` // Exclude if operateStat is set and status is applied/disposed/cancelled |
| 8 | IF | `ADD_DTM > kojihiCpMaxAddDtm` → `kojihiCpWribSvcCd = current WRIB_SVC_CD`, update max date |

**Block 11** — [SET] `(Get campaign start dates and mskm dates for net/phone)` (L15654)

| # | Type | Code |
|---|------|------|
| 1 | SET | `newCpNetStaymd = ccMap.get(KKSV0313_KKSV0313OP_WORK.HJNKJH_WRBCPNET_SYMD)` // New CP start date (Net) |
| 2 | SET | `newCpTelStaymd = ccMap.get(KKSV0313_KKSV0313OP_WORK.HJNKJH_WRBCPTEL_SYMD)` // New CP start date (Tel) |
| 3 | IF | `!isNullBlank(svcKeiNoNetNow)` → `mskmYmdNet = getSvcStaMskmYmd(ccMap, svcKeiNoNetNow)` |
| 4 | IF | `!isNullBlank(svcKeiNoTelNow)` → `mskmYmdTel = getSvcStaMskmYmd(ccMap, svcKeiNoTelNow)` |

**Block 12** — [FOR LOOP] `(First eligibility pass — campaign type validation)` (L15662)

> Core eligibility filtering: iterates each entry in tgList and removes entries that fail campaign eligibility rules. Checks new campaign validity, campaign start date compliance, and existing CP type matching.

| # | Type | Code |
|---|------|------|
| 1 | FOR | `i = 0; i < tgList.size(); i++` |
| 2 | SET | `wribSvcCd = tgList.get(i).get(comWribSvcCd)` |
| 3 | IF | `ALL_KOJIHI_CP_LIST.contains(wribSvcCd)` `[ALL_KOJIHI_CP_LIST = net+tel CP codes]` |
| 4 | IF | `[New campaign] isNullBlank(kojihiCpWribSvcCd)` → no existing CP found |
| 5 | IF | `!hasValidKapPlan(kapPlanCd, wribSvcCd, mskmYmd)` `[kapPlanCd = campaign plan code]` |
| 6 | EXEC | `printlnEjbLog(...)` + `tgList.remove(i); i--;` // Remove — invalid plan |
| 7 | IF | `KOJIHI_CP_NET_LIST.contains(wribSvcCd) && newCpNetStaymd.compareTo(mskmYmdNet) <= 0` `[KOJIHI_CP_NET_LIST = net CP codes]` |
| 8 | EXEC | `tgList.remove(i); i--;` // Remove — new CP not yet in campaign period |
| 9 | IF | `KOJIHI_CP_TEL_LIST.contains(wribSvcCd) && newCpTelStaymd.compareTo(mskmYmdTel) <= 0` |
| 10 | EXEC | `tgList.remove(i); i--;` // Remove — tel new CP not yet in campaign period |
| 11 | ELSE | `[Existing campaign]` |
| 12 | IF | `HYOJUN_KOJIHI_WRBK_CP_LIST.contains(kojihiCpWribSvcCd)` `[HYOJUN = standard discount codes]` |
| 13 | EXEC | `tgList.remove(i); i--;` // Remove — standard discount already exists |
| 14 | IF | `!isNullBlank(kojihiCpWribSvcCd) && !isSameTypeKojihiCp(kojihiCpWribSvcCd, wribSvcCd)` |
| 15 | EXEC | `tgList.remove(i); i--;` // Remove — type mismatch with existing |
| 16 | ELSE | `// Keep — eligible` |

**Block 13** — [FOR LOOP] `(Second pass — check if CP already applied)` (L15757)

> Determines if a standard construction cost discount CP has already been applied (finished). If so, removes the entry since a new one cannot be registered.

| # | Type | Code |
|---|------|------|
| 1 | SET | `isAplyZm = hasFinishKojihiCp(ccMap, baseSvcKeiNo, svcKeiNoList)` // v56.00.00 |
| 2 | FOR | `i = 0; i < tgList.size(); i++` |
| 3 | IF | `ALL_KOJIHI_CP_LIST.contains(tgList.get(i).get(comWribSvcCd))` |
| 4 | IF | `isAplyZm` |
| 5 | EXEC | `printlnEjbLog(...)` + `tgList.remove(i); i--;` // Remove — already applied |

**Block 14** — [FOR LOOP] `(Third pass — Net CP detailed eligibility check)` (L15825)

> For each Net construction cost discount CP in tgList, checks multiple conditions:
> - If discount operation status is set, verify kapKeiStat isn't empty/disposed/cancelled
> - If tel-standalone, exclude (unless cancellation/dispose/recovery)
> - If existing CP is the one-time uniform CP (IKKT), exclude

| # | Type | Code |
|---|------|------|
| 1 | FOR | `i = 0; i < tgList.size(); i++` |
| 2 | IF | `KOJIHI_CP_NET_LIST.contains(tgList.get(i).get(comWribSvcCd))` |
| 3 | IF | `[operateStat set] !isNullBlank(kojihiKapOperateStat)` |
| 4 | IF | `isNullBlank(kapKeiStat) || CD01471_DSL_ZM.equals(kapKeiStat) || CD01471_CANCEL_ZM.equals(kapKeiStat)` |
| 5 | EXEC | `tgList.remove(i); i--;` // Remove — discount contract disposed or cancelled |
| 6 | ELSE | `[operateStat not set] — continue` |
| 7 | IF | `!KAIHK.equals(addChgeDiv) && !CNCL.equals(addChgeDiv) && !DSL.equals(addChgeDiv) && isTelTandoku(...) && isTelTandoku2(...)` |
| 8 | EXEC | `tgList.remove(i); i--;` // Remove — standalone telephone, not a cancellation/dispose/recovery |
| 9 | IF | `WRIB_SVC_KOJIHI_KAP_CP_TEL_IKT.equals(kojihiCpWribSvcCd)` `[IKKT = one-time uniform CP]` |
| 10 | EXEC | `tgList.remove(i); i--;` // Remove — existing is one-time uniform |

**Block 15** — [FOR LOOP] `(Fourth pass — Tel CP detailed eligibility check)` (L15931)

> For each Tel construction cost discount CP in tgList, similar checks:
> - If operateStat is set and kapKeiStat is ACCEPTED/PROCESSING/CANCEL/COMPLETED, check tel-standalone and service status
> - If net service is in active status (unaccepted/processing/cancellation/in-service) AND not IKKT, exclude
> - If tel+tv are both in active status AND same billing number, exclude

| # | Type | Code |
|---|------|------|
| 1 | FOR | `i = 0; i < tgList.size(); i++` |
| 2 | IF | `KOJIHI_CP_TEL_LIST.contains(tgList.get(i).get(comWribSvcCd))` |
| 3 | IF | `[operateStat set] !isNullBlank(kojihiKapOperateStat)` |
| 4 | IF | `CD01471_UK_ZM.equals(kapKeiStat) || CD01471_SHOSA_ZUMI.equals(kapKeiStat) || CD01471_CNC_ZM.equals(kapKeiStat) || CD01471_KANRYOU_ZM.equals(kapKeiStat)` |
| 5 | IF | `!KAIHK/CNCL/DSL.equals(addChgeDiv) && isTelTandoku(...) && isTelTandoku2(...)` |
| 6 | EXEC | `tgList.remove(i); i--;` // Remove — standalone telephone |
| 7 | IF | `(CD00037_UK_ZM/SHOSA_ZUMI/CNC_ZM/SVCTK_CHU).equals(svcKeiStatNet) && !IKKT.equals(kojihiCpWribSvcCd)` |
| 8 | EXEC | `tgList.remove(i); i--;` // Remove — net service active |
| 9 | IF | `!(CD00037_UK_ZM/SHOSA_ZUMI/CNC_ZM/SVCTK_CHU).equals(svcKeiStatTel) && !(CD00037_UK_ZM/SHOSA_ZUMI/CNC_ZM/SVCTK_CHU).equals(svcKeiStatTv) && !(seikyKeiNoTel.equals(seikyKeiNoTv))` |
| 10 | EXEC | `tgList.remove(i); i--;` // Remove — tel+tv not both active with same billing |
| 11 | ELSE | `tgList.remove(i); i--;` // Default — exclude |

**Block 16** — [IF/ELSE-IF] `(Fifth pass — registration eligibility by change type)` (L16055)

> Final eligibility gate based on the change classification type. Determines whether the CP can be newly registered by checking if the same CP already exists or has been applied.

| # | Type | Code |
|---|------|------|
| 1 | FOR | `i = 0; i < tgList.size(); i++` |
| 2 | IF | `ALL_KOJIHI_CP_LIST.contains(tgList.get(i).get(comWribSvcCd))` |
| 3 | IF | `[NOT cancellation/dispose/change] !isNullBlank(kojihiKapOperateStat) == false && !(KAIHK/CNCL/DSL/CUST_PLS/CUST_SLT/BILL_PLS/BILL_SLT/LINE_PLS/PLAN_CHG/CRS_CHG).equals(addChgeDiv)` |
| 4 | IF | `svcKeiNoList.size() != 0` |
| 5 | SET | `kojihiKapMaxMap = getKojihiKapCpNew(ccMap, svcKeiNoList)` // Get max existing CP |
| 6 | IF | `wribSvcCdMax.equals(tgList.get(i).get(comWribSvcCd)) || CD00055_APLYZM.equals(wribSvcStatMax) || isNullBlank(wribSvcCdMax)` |
| 7 | EXEC | `tgList.remove(i); i--;` // Remove — same CP exists or already applied |
| 8 | ELSE-IF | `[IS cancellation/change]` `(KAIHK/CNCL/DSL/CUST_PLS/CUST_SLT/BILL_PLS/BILL_SLT/LINE_PLS/PLAN_CHG/CRS_CHG).equals(addChgeDiv)` |
| 9 | FOR | `ekk0081B029Map in ekk0081B029List` → collect svcKeiNoList |
| 10 | IF | `svcKeiNoList.size() != 0` |
| 11 | SET | `kojihiKapMaxMap = getKojihiKapCpNew(ccMap, svcKeiNoList)` |
| 12 | IF | `isNullBlank(wribSvcCdMax)` |
| 13 | EXEC | `tgList.remove(i); i--;` // Remove — no past amount CP exists |

**Block 17** — [IF] `(Cancel Tel CP when adding Net CP)` (L16134)

> When adding a Net CP while a Tel CP has unaccepted or in-service status, cancel the Tel CP. Creates cancellation records with appropriate reason codes.

| # | Type | Code |
|---|------|------|
| 1 | IF | `(CD00055_UKZM.equals(kojihiKapCpStatTel) || CD00055_SVCTK_CHU.equals(kojihiKapCpStatTel)) && !KAIHK.equals(addChgeDiv)` `[Tel CP active/unaccepted]` |
| 2 | FOR | `i = 0; i < tgList.size(); i++` |
| 3 | IF | `KOJIHI_CP_NET_LIST.contains(tgList.get(i).get(comWribSvcCd))` |
| 4 | FOR | `j = 0; j < wribsvkDchskmstList.size(); j++` |
| 5 | IF | `KOJIHI_CP_KAP_TEL_LIST.contains(wribsvkDchskmstList.get(j).get(comWribSvcCd))` |
| 6 | SET | `renbanNo = WRIBSVK_DCHSKMST_GRP_RLS + String.format(...)` |
| 7 | SET | `hashMap = new HashMap<>(wribsvkDchskmstList.get(j))` // Copy Tel CP entry |
| 8 | SET | `hashMap.put(SVC_CANCEL_RSN_CD, CD01390_CL_TEISE)` // Cancellation reason: order correction |
| 9 | IF | `WRIB_SVC_KEI_STAT_UK_ZM.equals(kojihiKapCpStatTel)` |
| 10 | SET | `hashMap.put(SVC_CANCEL_RSN_CD, SVC_CANCEL_RSN_CD_OTHER)` // Other cancellation reason |
| 11 | ELSE-IF | `WRIB_SVC_KEI_STAT_SVC_TK_CHU.equals(kojihiKapCpStatTel)` |
| 12 | SET | `hashMap.put(SVC_DLRE_CD, SVC_DLRE_CD_TUJYO_DSL)` // Normal termination |
| 13 | SET | `hashMap.put(SVC_ENDYMD, JCCBPCommon.getOpeDate(null))` // Service end date |
| 14 | SET | `hashMap.put(SVC_CHRG_ENDYMD, JCCBPCommon.getOpeDate(null))` // Charge end date |
| 15 | CALL | `createWribsvkDchskmstDslCncl(ccMap, hashMap, flg, funcCd, renbanNo)` // Create cancellation record |
| 16 | BREAK | `break;` // Found and cancelled |

**Block 18** — [FINAL LOG] (L16241)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `printlnEjbLog("業務log_delGHSvcCp_end")` // End logging |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `kojihi_kap_cp` | Field | Construction cost equivalent amount discount coupon — a promotional discount applied to standard construction cost charges |
| `kojihi_kap_cpdel` | Field | Construction cost discount deletion — the operation of removing a discount coupon from registration |
| `wrib_svc_cd` | Field | Writable service coupon code — identifies the type of discount service (Net, Tel, etc.) |
| `svc_kei_no` | Field | Service detail number — unique identifier for a service contract line item |
| `svc_kei_stat` | Field | Service contract status — indicates the lifecycle state of a service contract |
| `kap_kei_stat` | Field | Discount contract status — indicates the lifecycle state of a discount contract |
| `kojihi_kap_cp_stat` | Field | Construction cost discount CP status — the status of a specific discount coupon |
| `add_chge_div` | Field | Registration/change classification — identifies the type of contract change (cancellation, recovery, merge, split, plan change, etc.) |
| `ido_div` | Field | Modification division — identifies the type of modification (add, change, cancel, dispose) |
| `kojihi_kap_adchg_div` | Field | Construction cost discount address change division — flags when an address change is confirmed |
| `mskm_no` | Field | Construction cost contract number — the contract number for construction cost items |
| `mskm_ymd` | Field | Construction cost contract date — the date of the construction cost contract |
| `kojihi_kap_operate_stat` | Field | Construction cost discount operation status — flag indicating if discount is being actively modified (value "2" means clearing) |
| `kap_plan_cd` | Field | Campaign plan code — identifies the discount campaign plan |
| `svc_kei_kaisen_ucwk_no` | Field | Service detail improvement work number — tracks service improvement/change work orders |
| `gene_add_dtm` | Field | Generation addition date/time — tracks when a service was created/updated for version tracking |
| `seiky_kei_no` | Field | Billing service detail number — links to the billing service for invoicing |
| `kojihi_kap_cp_kei_no` | Field | Construction cost discount CP contract number — the contract number assigned to a discount coupon |
| GRP_DIV | Field | Group division — used to categorize service groups |
| WRIB_ADD_JOKEN_CD_STDARD_KEI | Field | Writable addition criteria code standard — criteria code for identifying standard contracts |
| WRIBSVK_DCHSKMST_GRP_SHOKAI | Field | Writable service discount contract master group inquiry prefix — prefix for inquiry group numbers |
| WRIBSVK_DCHSKMST_GRP_RLS | Field | Writable service discount contract master group release prefix — prefix for release/cancellation group numbers |
| ALL_KOJIHI_CP_LIST | Constant | List of all standard construction cost equivalent amount discount CP codes (Net + Tel variants) |
| KOJIHI_CP_NET_LIST | Constant | List of Net-only standard construction cost equivalent amount discount CP codes |
| KOJIHI_CP_TEL_LIST | Constant | List of Tel-only standard construction cost equivalent amount discount CP codes |
| HYOJUN_KOJIHI_WRBK_CP_LIST | Constant | List of standard construction cost discount (not equivalent amount) CP codes — takes priority over new equivalent amount CPs |
| CD00130_01 | Constant | Net service type code |
| CD00130_02 | Constant | Telephone service type code |
| CD00037_UK_ZM | Constant | Service contract status: Unaccepted (未受理) |
| CD00037_SHOSA_ZUMI | Constant | Service contract status: Processing completed (処理済) |
| CD00037_CNC_ZM | Constant | Service contract status: Cancellation (取消済) |
| CD00037_SVCTK_CHU | Constant | Service contract status: In service provision (サービス提供中) |
| CD00055_APLYZM | Constant | Discount CP status: Applied (適用済) |
| CD00055_DSLZM | Constant | Discount CP status: Disposed (解約済) |
| CD00055_CSLZM | Constant | Discount CP status: Cancelled (キャンセル済) |
| CD00055_UKZM | Constant | Discount CP status: Unaccepted (未設定) |
| CD00055_SVCTK_CHU | Constant | Discount CP status: In service (サービス提供中) |
| CD01471_DSL_ZM | Constant | Discount contract status: Disposed (解約済) |
| CD01471_CANCEL_ZM | Constant | Discount contract status: Cancelled (キャンセル済) |
| CD01471_UK_ZM | Constant | Discount contract status: Unaccepted (未設定) |
| CD01471_SHOSA_ZUMI | Constant | Discount contract status: Processing (処理済) |
| CD01471_CNC_ZM | Constant | Discount contract status: Cancellation (取消済) |
| CD01471_KANRYOU_ZM | Constant | Discount contract status: Completed (完了済) |
| CD01390_CL_TEISE | Constant | Cancellation reason: Order correction (訂正) |
| SVC_CANCEL_RSN_CD_OTHER | Constant | Cancellation reason code: Other |
| SVC_DLRE_CD_TUJYO_DSL | Constant | Termination reason code: Normal cancellation (通常解約) |
| ADD_CHGE_DIV_KAIHK | Constant | Change type: Recovery (回復) |
| ADD_CHGE_DIV_CNCL | Constant | Change type: Cancellation (取消) |
| ADD_CHGE_DIV_DSL | Constant | Change type: Disposal (廃止) |
| ADD_CHGE_DIV_CUST_PLS | Constant | Change type: Customer merge (お客様結合) |
| ADD_CHGE_DIV_CUST_SLT | Constant | Change type: Customer split (お客様分離) |
| ADD_CHGE_DIV_BILL_PLS | Constant | Change type: Billing contract merge (請求契約結合) |
| ADD_CHGE_DIV_BILL_SLT | Constant | Change type: Billing contract split (請求契約分離) |
| ADD_CHGE_DIV_LINE_PLS | Constant | Change type: Line merge (回線結合) |
| ADD_CHGE_DIV_PLAN_CHG | Constant | Change type: Plan change (プラン変更) |
| ADD_CHGE_DIV_CRS_CHG | Constant | Change type: Course change (コース変更) |
| KKA182001PJP | Constant | External integration view ID for KKA182 (Provider Information Registration Linkage — New/Additional/Disposal) |
| WRIB_SVC_KOJIHI_KAP_CP_NET | Constant | Net standard construction cost equivalent amount discount CP code |
| WRIB_SVC_KOJIHI_KAP_CP_TEL | Constant | Tel standard construction cost equivalent amount discount CP code |
| WRIB_SVC_KOJIHI_KAP_CP_TEL_IKT | Constant | Tel one-time uniform CP (一括CP) — a blanket discount applied to all tel services |
| WRIB_SVC_KOJIHI_CP_KAP_TEL_LIST | Constant | List of Tel CP codes for Kap (discount) processing |
| WRIB_SVC_KEI_STAT_UK_ZM | Constant | WRIB service contract status: Unaccepted |
| WRIB_SVC_KEI_STAT_SVC_TK_CHU | Constant | WRIB service contract status: In service provision |
| FTTH | Business term | Fiber To The Home — fiber-optic internet service (Net service type CD00130_01) |
| CP | Business term | Coupon (割引CP) — discount coupon/promotion applied to construction costs |
| IKKT | Business term | One-time uniform (一括) — a blanket discount applied uniformly |
| 工事費 | Business term | Construction cost — costs associated with installing telecom infrastructure |
| 割引 | Business term | Discount — promotional reduction in service charges |
| 契約 | Business term | Contract — service contract between customer and provider |
| 解約 | Business term | Cancellation/termination — ending a service contract |
| 取消 | Business term | Cancellation (administrative) — cancelling a registration or application |
| 処理済 | Business term | Processing completed — a status indicating work has been finished |
| 適用済 | Business term | Applied — a discount or promotion that has been successfully applied |
| 未設定 | Business term | Not set/unaccepted — no status has been assigned yet |
| サービス提供中 | Business term | In service provision — the service is actively being delivered |
| WRIB | Technical term | Writable (読み込み/書き込み) — indicating the service can be modified |
