# Business Logic — JKKWrisvcAutoAplyCC.delKojihiWrbkCpAfSeikySta() [489 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.delKojihiWrbkCpAfSeikySta()

This method performs the post-activation exclusion processing for standard construction fee discount CP (contract plans) in K-Opticom's customer service system. Its Javadoc states: "Performs exclusion processing for post-activation standard construction fee discount CP" and "Use this method immediately before registration processing." It determines whether any active standard discount contract should be released or recovered based on the current state of the customer's network, phone, and TV service contracts after activation.

The method handles multiple business operation types identified by the `addChgeDiv` (registration/change division) field: recovery/restore from suspension (value "04"), customer merge (value "11"), customer split (value "12"), bill merge (value "13"), bill split (value "14"), line merge (value "15"), plan change (value "07"), and course change (value "06"). It branches by these change types to apply different exclusion and recovery rules.

The method implements a router/dispatch pattern: after gathering and validating service contract data from multiple data sources (the `ccMap` working map, the `hjnkjhMap` secondary map, and database queries via the mapper), it routes execution to one of three main processing paths -- (1) early return if data extraction only or conditions not met, (2) recovery processing to restore a previously cancelled discount contract when service conditions have been re-satisfied, or (3) release processing to remove the discount contract when service conditions are no longer satisfied (e.g., all services terminated or cancelled).

Its role in the larger system is as a shared utility within the discount service auto-application component. It is called by `delKojihiWrbkCp()` during post-activation processing to handle the business logic of whether discount CPs should be retained, released, or recovered after service contract changes.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["delKojihiWrbkCpAfSeikySta(ccMap, flg, funcCd)"])
    START --> LOG["printlnEjbLog - Start logging"]
    LOG --> CHECKFLG["isFlagWrib(flg)"]
    CHECKFLG -- "false" --> RETURN1(["return early"])
    CHECKFLG -- "true" --> GETWORK["ccMap.get(HJNKJH_MAP) - hjnkjhMap"]

    GETWORK --> GETFIRST["firstSeikySvcKeiNo from hjnkjhMap"]
    GETFIRST --> CHECKFIRST["isNullBlank(firstSeikySvcKeiNo)"]
    CHECKFIRST -- "true" --> RETURN2(["return early - not activated"])
    CHECKFIRST -- "false" --> GETLIST["Get svcKeiGrpList, mapSvcKeiGrp, svcKeiList"]
    GETLIST --> GETBASE["getBaseSvcKeiNo(ccMap, stdardMap)"]
    GETBASE --> EXTRACT["Extract service vars from hjnkjhMap"]
    EXTRACT --> ADDCHG["addChgNoDtl2() - check home change details"]
    ADDCHG -- "true" --> RETURN3(["return early - home change in progress"])
    ADDCHG -- "false" --> CALLBASE["callEKK0241B003 - query base svc contract"]
    CALLBASE --> UPDATESVC["Update svcKeiKaisenUcwkNo from result"]
    UPDATESVC --> CHECKTYPE["Check ADD_CHGE_DIV type"]
    CHECKTYPE -- "Cust Split/Bill Split/Cust Merge/Bill Merge" --> DIVCHECK["kapSvcKeiKaisenUcwkNo vs baseSvcKeiKaisenUcwkNo"]
    DIVCHECK -- "Not Equal" --> RETURN4(["return early - different lines"])
    DIVCHECK -- "Equal" --> INITBOOL["Initialize isNetOk, isTelOk, isTvOk booleans"]
    CHECKTYPE -- "Other" --> INITBOOL

    INITBOOL --> CHECKNET["Check svcKeiStatNet not CD00037_CANCEL_ZM or CD00037_DSL_ZM"]
    CHECKNET -- "Invalid" --> CHECKTEL["Check svcKeiStatTel"]
    CHECKNET -- "Valid" --> NETSYSID["sysidNet == kapSysid AND seikyKeiNoNet == kapSeikyKeiNo"]
    NETSYSID -- "Match" --> NETCALL["callEKK0241B003(ccMap, svcKeiNoNet, FUNC_CD_1)"]
    NETCALL --> NETCOMPARE["svcKeiKaisenUcwkNoNet == svcKeiKaisenUcwkNo"]
    NETCOMPARE -- "Equal" --> NETOK["isNetOk = true"]
    NETOK --> NETHIHK["If ADD_CHGE_DIV_KAIHK check kapSvcKeiNoNet match"]
    NETHIHK --> CHECKTEL
    NETCOMPARE -- "Not Equal" --> CHECKTEL

    CHECKTEL -- "Invalid" --> CHECKTV["Check svcKeiStatTv"]
    CHECKTEL -- "Valid" --> TELSYSID["sysidTel == kapSysid AND seikyKeiNoTel == kapSeikyKeiNo"]
    TELSYSID -- "Match" --> TELCALL["callEKK0241B003(ccMap, svcKeiNoTel, FUNC_CD_1)"]
    TELCALL --> TELCOMPARE["svcKeiKaisenUcwkNoTel == svcKeiKaisenUcwkNo"]
    TELCOMPARE -- "Equal" --> TELOK["isTelOk = true"]
    TELOK --> TELHIHK["If ADD_CHGE_DIV_KAIHK check kapSvcKeiNoTel match"]
    TELHIHK --> CHECKTV
    TELCOMPARE -- "Not Equal" --> CHECKTV

    CHECKTV -- "Invalid" --> MAINCOND["Main: isNetOk OR (isTelOk AND isTvOk)"]
    CHECKTV -- "Valid" --> TVPCRS["callSvcKeiIchiiShokai - check pcrsCd != A23"]
    TVPCRS -- "A23 (re-send)" --> MAINCOND
    TVPCRS -- "Not A23" --> TVCALL["callEKK0241B003(ccMap, svcKeiNoTv, FUNC_CD_1)"]
    TVCALL --> TVCOMPARE["svcKeiKaisenUcwkNoTv == svcKeiKaisenUcwkNo"]
    TVCOMPARE -- "Equal" --> TVOK["isTvOk = true"]
    TVOK --> TVHIHK["If ADD_CHGE_DIV_KAIHK check kapSvcKeiNoTv match"]
    TVHIHK --> MAINCOND
    TVCOMPARE -- "Not Equal" --> MAINCOND

    MAINCOND -- "False" --> ELSEPATH["Else: remove recent standard CP"]
    ELSEPATH --> ELSEADCHG["adChgKojihiKapCp2(ccMap, firstSeikySvcKeiNo)"]
    ELSEADCHG --> ELSESTAT["Check WRIB_STAT_UK_ZM or SVC_TK_CHU"]
    ELSESTAT -- "Match" --> SETFLAG["hjnkjhMap.put(WRIB_DSL_FLG, WRIB_DSL_FLG_ON)"]
    SETFLAG --> ELSEDEL["delNetTelWribSvcKojihiKapCp()"]
    ELSEDEL --> ENDLOG(["printlnEjbLog - End"])
    ELSESTAT -- "No Match" --> ENDLOG

    MAINCOND -- "True" --> INITRECOVER["isRecover = false"]
    INITRECOVER --> CHECKHIHKTYPE["Check ADD_CHGE_DIV in KAIHK/Cust Merge/Bill Merge/Line Merge/Plan Chg/Course Chg"]
    CHECKHIHKTYPE -- "Match" --> CALLTASK["callEKU0081B070 - query task list"]
    CALLTASK --> CHECKTASK["eKU0081B070List null or empty"]
    CHECKTASK -- "Yes" --> GETRECENT["adChgKojihiKapCp2 - get recent discount CP"]
    CHECKTASK -- "No" --> ENDLOG
    GETRECENT --> CHECKSTAT["Check WRIB_STAT_DSL_ZM or CNCL_ZM"]
    CHECKSTAT -- "No" --> ENDLOG
    CHECKSTAT -- "Yes" --> AUTOAPLY["Check RLS_OPTY_CD_AUTO_APLY"]
    AUTOAPLY -- "No" --> ENDLOG
    AUTOAPLY -- "Yes" --> CANCELCHK["callEKK3131B040 - query contract status"]
    CANCELCHK --> KAPCNC["kapKeiStat == CD01471_CNC_ZM AND kapPayZanCnt != 0"]
    KAPCNC -- "No" --> KAPKANYOU["kapKeiStat == CD01471_KANRYOU_ZM"]
    KAPKANYOU -- "No" --> ENDLOG
    KAPKANYOU -- "Yes" --> KANYOURECOVER["If KAIHK: check kapIktSikySwchYm and kapSvc match"]
    KANYOURECOVER --> ISREC["isRecover = isDslCnclTogetherSvc()"]
    ISREC --> ENDLOG
    KAPCNC -- "Yes" --> KAIHKPATH["If KAIHK: check kapSvcKeiNo match"]
    KAIHKPATH --> ISREC2["isRecover = isDslCnclTogetherSvc()"]
    ISREC2 --> OTHERPATH["Check ADD_CHGE_DIV: Cust Merge/Bill Merge"]
    OTHERPATH --> ISTRUE["cpIdoDiv in CD00576_CUST_HEIGO/CUST_BNKT/SEIKY_HEIGO/SEIKY_BNKT"]
    ISTRUE -- "Yes" --> RECOVERTRUE["isRecover = true"]
    RECOVERTRUE --> ENDLOG
    ISTRUE -- "No" --> LINEPATH["Check ADD_CHGE_DIV: Line Merge"]
    LINEPATH -- "Yes" --> RECOVERTRUE
    LINEPATH --> PLANPATH["Check ADD_CHGE_DIV: Plan Chg/Course Chg"]
    PLANPATH -- "Yes" --> COURSECHK["isTelOk AND isTvOk AND course change A23 to non-A23"]
    COURSECHK -- "Yes" --> RECOVERTRUE
    COURSECHK -- "No" --> ENDLOG
    CHECKHIHKTYPE -- "No" --> ENDLOG

    RECOVERTRUE --> ISRECOVERCHECK["Check isRecover"]
    ISRECOVERCHECK -- "False" --> ENDLOG
    ISRECOVERCHECK -- "True" --> BUILDLIST["Build svcKeiNoLst from valid services"]
    BUILDLIST --> CALLALL["callEKK0451B012ToAll - query all discount CPs"]
    CALLALL --> CHECKNGCP["Check WRIB_JTTI_CMP or W50000003 - hasNgCp"]
    CHECKNGCP -- "Found" --> ENDLOG
    CHECKNGCP -- "Not Found" --> GETMSKM["getMskmDtlNoKojihiCp()"]
    GETMSKM --> PUTMSKM["wribSvcKojihiKapCp.put(MSKM_DTL_NO)"]
    PUTMSKM --> MSGMAP["setMsgMap - build message for WRIB_DCHS_SKBT_FLAG_WRIB"]
    MSGMAP --> CNCLCHK["Check WRIB_SVC_KEI_STAT_CNCL_ZM"]
    CNCLCHK -- "Yes" --> RECOVERCANCEL["callWribsvkCanselRecover()"]
    CNCLCHK -- "No" --> RECOVERSERVICE["callWribsvkRecover()"]
    RECOVERCANCEL --> ENDLOG
    RECOVERSERVICE --> ENDLOG
```

**CRITICAL -- Constant Resolution:**

| Constant | Value | Business Meaning |
|----------|-------|-----------------|
| `ADD_CHGE_DIV_KAIHK` | "04" | Recovery (restore from suspension/cancellation) |
| `ADD_CHGE_DIV_CUST_PLS` | "11" | Customer merge |
| `ADD_CHGE_DIV_CUST_SLT` | "12" | Customer split |
| `ADD_CHGE_DIV_BILL_PLS` | "13" | Bill merge |
| `ADD_CHGE_DIV_BILL_SLT` | "14" | Bill split |
| `ADD_CHGE_DIV_LINE_PLS` | "15" | Line merge |
| `ADD_CHGE_DIV_PLAN_CHG` | "07" | Plan change |
| `ADD_CHGE_DIV_CRS_CHG` | "06" | Course change |
| `GRP_DIV` | "grp_div" | Group division key in maps |
| `WRIB_ADD_JOKEN_CD_STDARD_KEI` | "00" | Standard contract discount registration condition |
| `JKKStrConst.CD00037_CANCEL_ZM` | "920" | Service contract status: cancellation completed |
| `JKKStrConst.CD00037_DSL_ZM` | "910" | Service contract status: termination completed |
| `JKKStrConst.CD01471_CNC_ZM` | "2" | Contract status: cancelled (for kapKeiStat) |
| `JKKStrConst.CD01471_KANRYOU_ZM` | "9" | Contract status: completed |
| `JKKStrConst.CD00576_CUST_HEIGO` | "1" | Customer merge division code |
| `JKKStrConst.CD00576_CUST_BNKT` | "2" | Customer split division code |
| `JKKStrConst.CD00576_SEIKY_HEIGO` | "3" | Bill merge division code |
| `JKKStrConst.CD00576_SEIKY_BNKT` | "4" | Bill split division code |
| `WRIB_SVC_KEI_STAT_DSL_ZM` | "910" | Discount service status: terminated |
| `WRIB_SVC_KEI_STAT_CNCL_ZM` | "920" | Discount service status: cancelled |
| `WRIB_SVC_KEI_STAT_UK_ZM` | "010" | Discount service status: received |
| `WRIB_SVC_KEI_STAT_SVC_TK_CHU` | "100" | Discount service status: in service |
| `WRIB_JTTI_CMP` | `["W10000141","W10000142","W10000143","W40000088","W40000089","W40000090","W40000106","W40000107","W40000108"]` | Self-managed CP (excluded from recovery) |
| `FUNC_CD_1` | "1" | Function code 1 |
| `WRIB_DSL_FLG_ON` | "1" | Discount DSL flag on |
| `SVC_KEI_ICHII_FUNC_CD` | "2" | Service contract inquiry function code |
| `WRIB_SVC_KEI_FOR_SVC_KEI_NO_ICHII_FUNC_CD` | "1" | Discount service inquiry by service number function code |

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `ccMap` | `HashMap<String, Object>` | The main working map carrying all business data for the current processing context. Contains the work map reference (`HJNKJH_MAP`), service contract group list (`SVC_KEI_GRP_LIST`), service contract list, change division (`ADD_CHGE_DIV`), registration detail number (`MSKM_NO`), discount CP change division (`KOJIHI_KAP_ADCHG_DIV`), and all intermediate service contract data (service numbers, statuses, SYSIDs, billing numbers for network/phone/TV). |
| 2 | `flg` | `String` | Write flag indicating whether data extraction items are present. Used by `isFlagWrib()` to determine if the method should process or return early. If `false`, data is only being extracted and no exclusion processing is needed. |
| 3 | `funcCd` | `String` | Function code passed through to the service IF calls for recovery and cancellation recovery operations. Used by `callWribsvkRecover()` and `callWribsvkCanselRecover()`. |

**Instance fields read by this method:**
- `mapper` (`JKKWrisvcAutoAplyCCMapper`) -- The mapper object used to invoke CBS (batch service) operations via `getMapper()`.

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `JKKWrisvcAutoAplyCC.getMapper` | - | - | Returns the mapper instance for database operations |
| R | `JKKWrisvcAutoAplyCC.getBaseSvcKeiNo` | - | - | Retrieves the base service contract number from the standard contract map |
| R | `JKKWrisvcAutoAplyCC.getMskmDtlNoKojihiCp` | - | - | Gets the application detail number for discount CP exclusion |
| R | `JKKWrisvcAutoAplyCC.isDslCnclTogetherSvc` | - | - | Checks if DSL cancellation applies to combined services; determines recovery eligibility |
| C | `JKKWrisvcAutoAplyCC.addChgNoDtl2` | - | - | Processes home change detail check; returns true if processing should be skipped |
| - | `JKKWrisvcAutoAplyCC.adChgKojihiKapCp2` | - | - | Retrieves the recent standard construction fee discount CP data |
| - | `JKKWrisvcAutoAplyCC.delNetTelWribSvcKojihiKapCp` | D | - | Deletes network and phone discount CP contract data |
| - | `JKKWrisvcAutoAplyCC.setFirstSeikySvcInf` | - | - | Sets the first billing service information in the working map |
| - | `JKKWrisvcAutoAplyCC.isNullBlank` (via utility classes) | - | - | Null/blank check utility calls |
| - | `JKKWrisvcAutoAplyCC.nullToBlank` | - | - | Null-to-blank string conversion utility calls |
| R | `JKKWrisvcAutoAplyCC.retStringList` | - | - | Converts a list to a StringList for mapper calls |
| R | `JKKWrisvcAutoAplyCC.retMsgMap` | - | - | Creates a message map for error/success message handling |
| - | `JKKWrisvcAutoAplyCC.setMsgMap` | - | - | Sets the message map with discount service exclusion message |
| - | `JKKWrisvcAutoAplyCC.printlnEjbLog` | - | - | Business log output for start/end markers |
| R | `JKKWrisvcAutoAplyCCMapper.callEKK0241B003` | EKK0241B003 | KK_T_SVC_KEI (Service Contract) | Queries service contract detail by service number to get the service contract internal detail number |
| R | `JKKWrisvcAutoAplyCCMapper.callEKU0081B070` | EKU0081B070 | KK_T_TASK (Task/Project list) | Queries the work project list (internal detail number, service contract number) by first billing service number |
| R | `JKKWrisvcAutoAplyCCMapper.callEKK3131B040` | EKK3131B040 | KK_T_KAP_KEI (Billing Contract) | Queries billing contract status and remaining payment count for the first billing service |
| R | `JKKWrisvcAutoAplyCCMapper.callSvcKeiIchiiShokai` | EKK0081A010 | KK_T_SVC_KEI_ISP (Service Contract Table) | Inquires service contract one-table data to get the price course code (PCRS_CD) for TV service |
| R | `JKKWrisvcAutoAplyCCMapper.callEKK0451B012ToAll` | EKK0451B012 | KK_T_WRIB_SVC_KEI (Discount Service Contract) | Queries all discount service contracts for given service numbers |
| C | `JKKWrisvcAutoAplyCCMapper.callWribsvkCanselRecover` | - | KK_T_WRIB_SVC_KEI (Discount Service Contract) | Service IF call to restore cancellation for pre-cancelled discount service |
| C | `JKKWrisvcAutoAplyCCMapper.callWribsvkRecover` | - | KK_T_WRIB_SVC_KEI (Discount Service Contract) | Service IF call to recover/restore the discount service contract |

## 5. Dependency Trace

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

No screen/batch entry points found within 8 hops. Direct callers found: 66 methods.
Terminal operations from this method: `printlnEjbLog` [-], `delNetTelWribSvcKojihiKapCp` [-], `nullToBlank` [-], `adChgKojihiKapCp2` [-], `callWribsvkRecover` [-], `getMapper` [R], `callWribsvkCanselRecover` [-], `setMsgMap` [-], `retMsgMap` [-], `getMskmDtlNoKojihiCp` [R], `callEKK0451B012ToAll` [-], `isNullBlank` [-], `callEKK0241B003` [R], `callEKU0081B070` [R], `callEKK3131B040` [R], `callSvcKeiIchiiShokai` [R], `isDslCnclTogetherSvc` [-], `setFirstSeikySvcInf` [-], `addChgNoDtl2` [-]

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | CBS:JKKWrisvcAutoAplyCC.delKojihiWrbkCp | `delKojihiWrbkCp` -> `delKojihiWrbkCpAfSeikySta` | `callEKK0241B003 [R] KK_T_SVC_KEI`, `callWribsvkRecover [C] KK_T_WRIB_SVC_KEI`, `callWribsvkCanselRecover [C] KK_T_WRIB_SVC_KEI`, `callEKK0451B012ToAll [R] KK_T_WRIB_SVC_KEI`, `callEKK3131B040 [R] KK_T_KAP_KEI`, `callEKU0081B070 [R] KK_T_TASK`, `callSvcKeiIchiiShokai [R] KK_T_SVC_KEI_ISP`, `delNetTelWribSvcKojihiKapCp [D] KK_T_WRIB_SVC_KEI` |

## 6. Per-Branch Detail Blocks

**Block 1** — IF (write flag check) (L20147)

> If `isFlagWrib(flg)` returns false, the data is only being extracted (not processing), so return immediately. This is a guard clause for data-only extraction mode.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `isFlagWrib(flg)` // Check write flag |
| 2 | RETURN | `return` // Early exit if data extraction only |

**Block 2** — IF (work map null check) (L20153)

> Retrieves the `hjnkjhMap` (work secondary map) from `ccMap`. If it is null, `firstSeikySvcKeiNo` defaults to empty string.

| # | Type | Code |
|---|------|------|
| 1 | SET | `hjnkjhMap = (HashMap)ccMap.get(KKSV0313_KKSV0313OP_WORK.HJNKJH_MAP)` |
| 2 | SET | `firstSeikySvcKeiNo = ""` // Default empty |

**Block 3** — IF (first billing service number check) (L20158)

> If `firstSeikySvcKeiNo` is null or blank, the service has not been activated, so no exclusion processing is performed.

| # | Type | Code |
|---|------|------|
| 1 | SET | `firstSeikySvcKeiNo = nullToBlank(hjnkjhMap.get(EKK3131B060CBSMsg1List.FIRST_SEIKY_SVC_KEI_NO))` |
| 2 | CALL | `JKKStringUtil.isNullBlank(firstSeikySvcKeiNo)` // Check if not activated |
| 3 | RETURN | `return` // Not activated -- skip processing |

**Block 4** — Data extraction (L20163-L20167)

> Extracts the service contract group list and standard contract list from `ccMap` using constants `GRP_DIV` and `WRIB_ADD_JOKEN_CD_STDARD_KEI`.

| # | Type | Code |
|---|------|------|
| 1 | SET | `comSvcKeiGrpList = KKSV0313_KKSV0313OP_WORK.SVC_KEI_GRP_LIST` [-> "svc_kei_grp_list"] |
| 2 | SET | `comSvcKeiList = KKSV0313_KKSV0313OP_WORK_SVC_KEI_GRP.SVC_KEI_LIST` |
| 3 | SET | `svcKeiGrpList = (ArrayList)ccMap.get(comSvcKeiGrpList)` |
| 4 | CALL | `getMapFromList(svcKeiGrpList, GRP_DIV, WRIB_ADD_JOKEN_CD_STDARD_KEI)` [-> "00"] |
| 5 | SET | `svcKeiList = (ArrayList)mapSvcKeiGrp.get(comSvcKeiList)` |
| 6 | SET | `stdardMap = svcKeiList.get(0)` |
| 7 | CALL | `getBaseSvcKeiNo(ccMap, stdardMap)` |

**Block 5** — IF (home change detail check) (L20208)

> Calls `addChgNoDtl2()` to check if a home change is in progress (during home change or home change confirmation). If true, processing is terminated to avoid conflicts.

| # | Type | Code |
|---|------|------|
| 1 | SET | `addChgeDiv = nullToBlank(ccMap.get(KKSV0313_KKSV0313OP_WORK.ADD_CHGE_DIV))` |
| 2 | SET | `mskmNo = nullToBlank(ccMap.get(KKSV0313_KKSV0313OP_WORK.MSKM_NO))` |
| 3 | SET | `kojihiKapAdchgDiv = nullToBlank(ccMap.get(KKSV0313_KKSV0313OP_WORK.KOJIHI_KAP_ADCHG_DIV))` |
| 4 | CALL | `addChgNoDtl2(ccMap, mskmNo, addChgeDiv, kojihiKapAdchgDiv, baseSvcKeiNo)` |
| 5 | RETURN | `return` // Home change in progress -- skip |

**Block 6** — IF (base contract query) (L20213)

> If `baseSvcKeiNo` is not blank, query the service contract detail via `callEKK0241B003` to get the current service contract internal detail number.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `!JKKStringUtil.isNullBlank(baseSvcKeiNo)` |
| 2 | CALL | `getMapper().callEKK0241B003(ccMap, baseSvcKeiNo, FUNC_CD_1)` |
| 3 | SET | `svcKeiKaisenUcwkNo = result[0].getString(EKK0241B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO)` |

**Block 7** — IF (customer/bill merge or split check) (L20220-L20222)

> If `addChgeDiv` is Customer Merge ("11"), Customer Split ("12"), Bill Merge ("13"), or Bill Split ("14"), check that `kapSvcKeiKaisenUcwkNo` equals `baseSvcKeiKaisenUcwkNo`. If not equal (different lines), return early.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `ADD_CHGE_DIV_CUST_PLS.equals(addChgeDiv)` [-> "11"] |
| 2 | CALL | `ADD_CHGE_DIV_BILL_PLS.equals(addChgeDiv)` [-> "13"] |
| 3 | CALL | `ADD_CHGE_DIV_CUST_SLT.equals(addChgeDiv)` [-> "12"] |
| 4 | CALL | `ADD_CHGE_DIV_BILL_SLT.equals(addChgeDiv)` [-> "14"] |
| 5 | CALL | `kapSvcKeiKaisenUcwkNo.equals(baseSvcKeiKaisenUcwkNo)` |
| 6 | RETURN | `return` // Different lines -- skip |

**Block 8** — IF (network service check) (L20242-L20274)

> Checks if the network service is active (status is not cancelled "920" or terminated "910"). If valid, verifies that the SYSID and billing number match the first billing contract. If they match, queries the service contract for the network service number and compares the internal detail number.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `!JKKStringUtil.isNullBlank(svcKeiStatNet)` |
| 2 | CALL | `!JKKStrConst.CD00037_CANCEL_ZM.equals(svcKeiStatNet)` [-> "920"] |
| 3 | CALL | `!JKKStrConst.CD00037_DSL_ZM.equals(svcKeiStatNet)` [-> "910"] |
| 4 | SET | `isNetOk = false`, `isNetOkKihk = false` |
| 5 | CALL | `sysidNet.equals(kapSysid) && seikyKeiNoNet.equals(kapSeikyKeiNo)` |
| 6 | CALL | `getMapper().callEKK0241B003(ccMap, svcKeiNoNet, FUNC_CD_1)` |
| 7 | SET | `svcKeiKaisenUcwkNoNet = result.getString(EKK0241B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO)` |
| 8 | SET | `isNetOk = true` // If internal detail numbers match |
| 9.1 | IF (KAIHK check for net) (L20266) | `ADD_CHGE_DIV_KAIHK.equals(addChgeDiv)` [-> "04"] |
| 9.1.1 | SET | `isNetOkKihk = true` // If kapSvcKeiNoNet matches hjnkjhMap svcKeiNoNet |

**Block 9** — IF (phone service check) (L20280-L20312)

> Same logic as Block 8 but for the phone service. Checks `svcKeiStatTel` against cancellation/termination statuses, compares SYSID and billing numbers, then queries service contract.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `!JKKStringUtil.isNullBlank(svcKeiStatTel)` |
| 2 | CALL | `!JKKStrConst.CD00037_CANCEL_ZM.equals(svcKeiStatTel)` [-> "920"] |
| 3 | CALL | `!JKKStrConst.CD00037_DSL_ZM.equals(svcKeiStatTel)` [-> "910"] |
| 4 | CALL | `sysidTel.equals(kapSysid) && seikyKeiNoTel.equals(kapSeikyKeiNo)` |
| 5 | CALL | `getMapper().callEKK0241B003(ccMap, svcKeiNoTel, FUNC_CD_1)` |
| 6 | SET | `isTelOk = true` // If internal detail numbers match |
| 7.1 | IF (KAIHK check for tel) (L20304) | `ADD_CHGE_DIV_KAIHK.equals(addChgeDiv)` [-> "04"] |
| 7.1.1 | SET | `isTelOkKihk = true` // If kapSvcKeiNoTel matches hjnkjhMap svcKeiNoTel |

**Block 10** — IF (TV service check) (L20318-L20357)

> Same logic as Blocks 8-9 but for TV service. Additionally checks the price course code (`pcrsCd`) to exclude re-send ("A23") cases, since re-send transactions should not trigger discount exclusion.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `!JKKStringUtil.isNullBlank(svcKeiStatTv)` |
| 2 | CALL | `!JKKStrConst.CD00037_CANCEL_ZM.equals(svcKeiStatTv)` [-> "920"] |
| 3 | CALL | `!JKKStrConst.CD00037_DSL_ZM.equals(svcKeiStatTv)` [-> "910"] |
| 4 | CALL | `sysidTv.equals(kapSysid) && seikyKeiNoTv.equals(kapSeikyKeiNo)` |
| 5 | CALL | `getMapper().callSvcKeiIchiiShokai(ccMap, svcKeiNoTv, SVC_KEI_ICHII_FUNC_CD, "")` |
| 6 | SET | `pcrsCd = svcKeiTvMap.get(EKK0081A010CBSMsg1List.PCRS_CD)` |
| 7 | IF (not re-send) (L20330) | `!"A23".equals(pcrsCd)` |
| 7.1 | CALL | `getMapper().callEKK0241B003(ccMap, svcKeiNoTv, FUNC_CD_1)` |
| 7.2 | SET | `isTvOk = true` // If internal detail numbers match |
| 8.1 | IF (KAIHK check for tv) (L20349) | `ADD_CHGE_DIV_KAIHK.equals(addChgeDiv)` [-> "04"] |
| 8.1.1 | SET | `isTvOkKihk = true` // If kapSvcKeiNoTv matches hjnkjhMap svcKeiNoTv |

**Block 11** — IF (main condition: net OR (tel AND tv)) (L20362)

> If network is valid, or both phone and TV are valid, proceed to discount CP processing. Otherwise, go to the else branch to release the recent standard CP.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `isNetOk || (isTelOk && isTvOk)` |

**Block 12** — IF (change type for recovery) (L20368)

> If `addChgeDiv` is Recovery ("04"), Customer Merge ("11"), Bill Merge ("13"), Line Merge ("15"), Plan Change ("07"), or Course Change ("06"), query the work project list and check if the first billing service has not been cancelled.

| # | Type | Code |
|---|------|------|
| 1 | SET | `isRecover = false` |
| 2 | SET | `wribSvcKojihiKapCp = null` |
| 3 | CALL | `ADD_CHGE_DIV_KAIHK.equals(addChgeDiv)` [-> "04"] |
| 4 | CALL | `ADD_CHGE_DIV_CUST_PLS.equals(addChgeDiv)` [-> "11"] |
| 5 | CALL | `ADD_CHGE_DIV_BILL_PLS.equals(addChgeDiv)` [-> "13"] |
| 6 | CALL | `ADD_CHGE_DIV_LINE_PLS.equals(addChgeDiv)` [-> "15"] |
| 7 | CALL | `ADD_CHGE_DIV_PLAN_CHG.equals(addChgeDiv)` [-> "07"] |
| 8 | CALL | `ADD_CHGE_DIV_CRS_CHG.equals(addChgeDiv)` [-> "06"] |
| 9 | CALL | `getMapper().callEKU0081B070(ccMap, firstSeikySvcKeiNo, svcKeiKaisenUcwkNo)` |
| 10 | IF (no task list -- recent CP query) (L20381) | `eKU0081B070List == null || length == 0` |
| 10.1 | CALL | `adChgKojihiKapCp2(ccMap, firstSeikySvcKeiNo)` |
| 10.2 | SET | `wribSvcKeiStat = result.get(EKK0451A010CBSMsg1List.WRIB_SVC_KEI_STAT)` |
| 10.3 | SET | `mskmDtlNo = result.get(EKK0451A010CBSMsg1List.MSKM_DTL_NO)` |

**Block 13** — IF (discount status is terminated or cancelled) (L20385)

> If the discount service status is Terminated ("910") or Cancelled ("920"), check if the cancellation opportunity code is Auto Application.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `WRIB_SVC_KEI_STAT_DSL_ZM.equals(wribSvcKeiStat)` [-> "910"] |
| 2 | CALL | `WRIB_SVC_KEI_STAT_CNCL_ZM.equals(wribSvcKeiStat)` [-> "920"] |
| 3 | CALL | `RLS_OPTY_CD_AUTO_APLY.equals(wribSvcKojihiKapCp.get(EKK0451A010CBSMsg1List.WRIB_DSL_CNCL_OPTY_CD))` |

**Block 14** — IF (auto application -- query contract status) (L20392)

> If the cancellation was auto-applied, query the billing contract status (`kapKeiStat`) and remaining payment count (`kapPayZanCnt`).

| # | Type | Code |
|---|------|------|
| 1 | CALL | `getMapper().callEKK3131B040(ccMap, firstSeikySvcKeiNo)` |
| 2 | SET | `kapKeiStat = result.getString(EKK3131B040CBSMsg1List.KAP_KEI_STAT)` |
| 3 | SET | `kapPayZanCnt = result.getString(EKK3131B040CBSMsg1List.KAP_PAY_ZAN_CNT)` |
| 4 | SET | `kapPayZanCnt = "0"` // If null/blank |

**Block 15** — IF (contract cancelled with remaining payments) (L20399)

> If `kapKeiStat` equals Cancelled ("2") and `kapPayZanCnt` is not "0", the discount is in a state where it should potentially be recovered.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `JKKStrConst.CD01471_CNC_ZM.equals(kapKeiStat)` [-> "2"] |
| 2 | CALL | `!"0".equals(kapPayZanCnt)` |
| 3 | SET | `cpIdoDiv = result.get(EKK0451A010CBSMsg1List.IDO_DIV)` |

**Block 16** — IF (KAIHK with kihen match) (L20407)

> If `addChgeDiv` is Recovery ("04"), check if the kihen (cancellation details) service numbers match. If they do, recovery is determined by `isDslCnclTogetherSvc()`.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `ADD_CHGE_DIV_KAIHK.equals(addChgeDiv)` [-> "04"] |
| 2 | CALL | `isNetOkKihk || (isTelOkKihk && isTvOkKihk)` |
| 3 | CALL | `isDslCnclTogetherSvc(ccMap, baseSvcKeiNo, mskmDtlNo)` |
| 4 | SET | `isRecover = true` |

**Block 17** — IF (Customer Merge / Bill Merge with customer/bill division) (L20426)

> If `addChgeDiv` is Customer Merge ("11") or Bill Merge ("13"), check if `cpIdoDiv` is Customer Merge ("1"), Customer Split ("2"), Bill Merge ("3"), or Bill Split ("4"). If so, set `isRecover = true`.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `ADD_CHGE_DIV_CUST_PLS.equals(addChgeDiv)` [-> "11"] |
| 2 | CALL | `ADD_CHGE_DIV_BILL_PLS.equals(addChgeDiv)` [-> "13"] |
| 3 | CALL | `JKKStrConst.CD00576_CUST_HEIGO.equals(cpIdoDiv)` [-> "1"] |
| 4 | CALL | `JKKStrConst.CD00576_CUST_BNKT.equals(cpIdoDiv)` [-> "2"] |
| 5 | CALL | `JKKStrConst.CD00576_SEIKY_HEIGO.equals(cpIdoDiv)` [-> "3"] |
| 6 | CALL | `JKKStrConst.CD00576_SEIKY_BNKT.equals(cpIdoDiv)` [-> "4"] |
| 7 | SET | `isRecover = true` |

**Block 18** — IF (Line Merge) (L20436)

> If `addChgeDiv` is Line Merge ("15"), recovery is always set to true.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `ADD_CHGE_DIV_LINE_PLS.equals(addChgeDiv)` [-> "15"] |
| 2 | SET | `isRecover = true` |

**Block 19** — IF (Plan Change / Course Chg) (L20440)

> If `addChgeDiv` is Plan Change ("07") or Course Change ("06"), check if both phone and TV are valid, and if there is a course change from A23 (re-send) to non-A23. If so, recovery is set to true.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `ADD_CHGE_DIV_PLAN_CHG.equals(addChgeDiv)` [-> "07"] |
| 2 | CALL | `ADD_CHGE_DIV_CRS_CHG.equals(addChgeDiv)` [-> "06"] |
| 3 | CALL | `isTelOk && isTvOk` |
| 4 | FOR | `for (mapSvcKei : svcKeiList)` |
| 4.1 | SET | `svcCd = mapSvcKei.get(SVC_CD)` |
| 4.2 | SET | `pcrsCd = mapSvcKei.get(PCRS_CD)` |
| 4.3 | SET | `chgeBfPcrsCd = mapSvcKei.get(CHGE_BF_PCRS_CD)` |
| 4.4 | CALL | `"03".equals(svcCd) && "A23".equals(chgeBfPcrsCd) && !"A23".equals(pcrsCd)` |
| 4.5 | SET | `isRecover = true` |

**Block 20** — IF (contract completed) (L20467)

> If `kapKeiStat` equals Completed ("9"), and `addChgeDiv` is Recovery ("04"), check if the general billing replacement year/month (`kapIktSikySwchYm`) is set (forced termination recovery). If so and kihen service numbers match, recovery is set to true.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `JKKStrConst.CD01471_KANRYOU_ZM.equals(kapKeiStat)` [-> "9"] |
| 2 | CALL | `ADD_CHGE_DIV_KAIHK.equals(addChgeDiv)` [-> "04"] |
| 3 | SET | `kapIktSikySwchYm = result.getString(EKK3131B040CBSMsg1List.KAP_IKT_SIKY_SWCH_YM)` |
| 4 | CALL | `!JKKStringUtil.isNullBlank(kapIktSikySwchYm)` |
| 5 | CALL | `isNetOkKihk || (isTelOkKihk && isTvOkKihk)` |
| 6 | CALL | `isDslCnclTogetherSvc(ccMap, baseSvcKeiNo, mskmDtlNo)` |
| 7 | SET | `isRecover = true` |

**Block 21** — IF (recovery needed) (L20528)

> If `isRecover` is true, check whether any self-managed CP or residual amount reduction CP exists for the service numbers. If no such "bad" CP is found, proceed with recovery.

| # | Type | Code |
|---|------|------|
| 1 | SET | `hasNgCp = false` |
| 2 | SET | `svcKeiNoLst = new ArrayList<String>()` |
| 3 | IF (net valid) (L20533) | `!isNullBlank(svcKeiStatNet) && !CD00037_CANCEL_ZM && !CD00037_DSL_ZM` |
| 3.1 | SET | `svcKeiNoLst.add(svcKeiNoNet)` |
| 4 | IF (tel valid) (L20539) | `!isNullBlank(svcKeiStatTel) && !CD00037_CANCEL_ZM && !CD00037_DSL_ZM` |
| 4.1 | SET | `svcKeiNoLst.add(svcKeiNoTel)` |
| 5 | IF (tv valid) (L20545) | `!isNullBlank(svcKeiStatTv) && !CD00037_CANCEL_ZM && !CD00037_DSL_ZM` |
| 5.1 | SET | `svcKeiNoLst.add(svcKeiStatTv)` |
| 6 | IF (svcKeiNoLst has items) (L20554) | `svcKeiNoLst.size() > 0` |
| 6.1 | CALL | `getMapper().callEKK0451B012ToAll(ccMap, WRIB_SVC_KEI_FOR_SVC_KEI_NO_ICHII_FUNC_CD, retStringList(svcKeiNoLst))` |
| 6.2 | FOR | `for (j = 0; j < ekk0451B012.size(); j++)` |
| 6.2.1 | CALL | `WRIB_JTTI_CMP.contains(ekk0451B012.get(j).get(WRIB_SVC_CD)) || "W50000003".equals(...)` |
| 6.2.2 | SET | `hasNgCp = true` // Self-managed CP exists |
| 7 | IF (no bad CP) (L20578) | `!hasNgCp` |
| 7.1 | CALL | `getMskmDtlNoKojihiCp(ccMap, baseSvcKeiNo)` |
| 7.2 | SET | `wribSvcKojihiKapCp.put(MSKM_DTL_NO, mskmDtlNo)` |
| 7.3 | CALL | `setMsgMap(retMsgMap(...), true, WRIB_DCHS_SKBT_FLAG_WRIB)` |
| 7.4 | IF (cancelled status) (L20587) | `WRIB_SVC_KEI_STAT_CNCL_ZM.equals(wribSvcKeiStat)` [-> "920"] |
| 7.4.1 | CALL | `getMapper().callWribsvkCanselRecover(ccMap, wribSvcKojihiKapCp, funcCd, "")` |
| 7.5 | IF (not cancelled) (L20591) | else |
| 7.5.1 | CALL | `getMapper().callWribsvkRecover(ccMap, wribSvcKojihiKapCp, funcCd, "")` |

**Block 22** — ELSE (conditions not met -- release discount CP) (L20601)

> If the main condition (`isNetOk || (isTelOk && isTvOk)`) is false, release the recent standard construction fee discount CP if it is in Received ("010") or In Service ("100") status.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `adChgKojihiKapCp2(ccMap, firstSeikySvcKeiNo)` |
| 2 | CALL | `WRIB_SVC_KEI_STAT_UK_ZM.equals(wribSvcKeiStat)` [-> "010"] |
| 3 | CALL | `WRIB_SVC_KEI_STAT_SVC_TK_CHU.equals(wribSvcKeiStat)` [-> "100"] |
| 4 | SET | `hjnkjhMap.put(WRIB_DSL_FLG, WRIB_DSL_FLG_ON)` |
| 5 | CALL | `delNetTelWribSvcKojihiKapCp(ccMap, wribSvcKojihiKapCp)` |

**Block 23** — End logging (L20630)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `printlnEjbLog("業務log_delKojihiWrbkCpAfSeikySta_end")` |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `delKojihiWrbkCpAfSeikySta` | Method | Delete Kojihi (construction fee) Wribk (discount) Cp (contract plan) After Seiky (billing) Sta (status) -- post-activation discount exclusion processing |
| `ccMap` | Field | Construction/Customer work map -- the main working HashMap carrying all processing context data |
| `hjnkjhMap` | Field | HJNKJH (recovery/cancellation detail) map -- secondary map holding recovery-related service contract data |
| `firstSeikySvcKeiNo` | Field | First billing service contract number -- the original service contract number at first activation/billing |
| `addChgeDiv` | Field | Registration/change division -- operation type code that determines which exclusion/recovery logic to apply |
| `kapSysid` | Field | KAP (billing) SYSID -- system ID associated with the first billing contract |
| `kapSeikyKeiNo` | Field | KAP (billing) contract number -- the billing contract number for comparison |
| `svcKeiKaisenUcwkNo` | Field | Service contract kaisen (line) ucwk (detail) number -- internal detail number for service contract line items |
| `svcKeiNoNet` / `svcKeiNoTel` / `svcKeiNoTv` | Field | Service contract number for Network, Telephone, and TV respectively |
| `svcKeiStatNet` / `svcKeiStatTel` / `svcKeiStatTv` | Field | Service contract status for Network, Telephone, and TV respectively (010=Received, 100=In Service, 910=Terminated, 920=Cancelled) |
| `isNetOk` / `isTelOk` / `isTvOk` | Field | Boolean flags indicating whether each service type meets the conditions for discount CP processing |
| `isNetOkKihk` / `isTelOkKihk` / `isTvOkKihk` | Field | Boolean flags indicating kihen (cancellation details) service number match for recovery processing |
| `isRecover` | Field | Boolean flag indicating whether a discount CP should be recovered/restored |
| `hasNgCp` | Field | Boolean flag indicating whether a self-managed CP or problematic CP exists that prevents recovery |
| `wribSvcKojihiKapCp` | Field | Wrib (discount) service kojihi (construction fee) kap (discount) cp -- the discount service contract object for the standard construction fee discount |
| `wrIb_dsl_flg` | Field | Discount DSL flag -- marker set when standard CP should be released |
| `wrIb_jtti_cmp` | Field | List of self-managed CP codes (W10000141, W10000142, etc., W40000088, etc., W40000106, etc.) -- these are excluded from automatic recovery |
| `funcCd` | Field | Function code -- passed to service IF calls for recovery operations |
| `RLS_OPTY_CD_AUTO_APLY` | Constant | Cancellation opportunity code: automatic application -- indicates the discount cancellation was auto-triggered |
| `FLG` | Field | Write flag -- determines if data extraction only or processing is needed |
| K-Opticom | Business term | Japanese telecommunications service provider (K-Opticom Corporation) |
| CP | Business term | Contract Plan -- discount promotional contract plans offered to customers |
| Standard construction fee discount CP | Business term | A promotional discount on construction/installation fees applied as a contract plan |
| WRIB | Business term | Wrib (discount) -- short for "warihiki" (discount in Japanese), referring to discount service contracts |
| KOJIHI | Business term | Kojihi (construction fee in Japanese) -- refers to installation/construction charges |
| KAP | Business term | Kap (discount in Japanese) -- refers to discount/promotional pricing |
| SEIKY | Business term | Seiky (billing in Japanese) -- refers to billing/invoicing |
| SVC_KEI | Business term | Service Kei (service contract line in Japanese) -- service contract identifier |
| MSKM | Business term | Mskm (application/detail in Japanese) -- application detail number |
| KAIHK | Business term | Kaihk (recovery in Japanese) -- restore from suspension/cancellation |
| CUST_PLS / BILL_PLS | Business term | Customer merge / Bill merge -- consolidating multiple customer or billing accounts |
| CUST_SLT / BILL_SLT | Business term | Customer split / Bill split -- splitting a customer or billing account |
| LINE_PLS | Business term | Line merge -- merging service lines (account lines) |
| PLAN_CHG / CRS_CHG | Business term | Plan change / Course change -- changing the service plan or course/package |
| FUNC_CD_1 | Constant | Function code "1" -- used as a default function code for mapper queries |
| CD00037_CANCEL_ZM | Constant | Service contract status "920" -- cancellation completed |
| CD00037_DSL_ZM | Constant | Service contract status "910" -- termination completed |
| CD01471_CNC_ZM | Constant | Contract status "2" -- cancelled |
| CD01471_KANRYOU_ZM | Constant | Contract status "9" -- completed |
| CD00576_CUST_HEIGO | Constant | Customer merge division code "1" |
| CD00576_CUST_BNKT | Constant | Customer split division code "2" |
| CD00576_SEIKY_HEIGO | Constant | Bill merge division code "3" |
| CD00576_SEIKY_BNKT | Constant | Bill split division code "4" |
| PCRS_CD | Field | Price course code -- the pricing plan code for a service (e.g., "A23" for re-send) |
| CAP_IKT_SIKY_SWCH_YM | Field | CAP (billing) IKT (all-inclusive) SIKY (billing) SWCH (replacement) YM (year/month) -- billing replacement date for forced termination recovery |
| GRP_DIV | Constant | "grp_div" -- group division key used in service contract group maps |
| WRIB_ADD_JOKEN_CD_STDARD_KEI | Constant | "00" -- standard contract discount registration condition code |
| SVC_KEI_ICHII_FUNC_CD | Constant | "2" -- service contract one-table inquiry function code |
| WRIB_SVC_KEI_FOR_SVC_KEI_NO_ICHII_FUNC_CD | Constant | "1" -- discount service inquiry by service number function code |
| EKK0241B003 | CBS | Service contract detail inquiry service -- queries service contract internal detail number |
| EKK0451B012 | CBS | Discount service contract list inquiry -- queries discount service contracts |
| EKK3131B040 | CBS | Billing contract status inquiry -- queries billing contract status and remaining payment count |
| EKU0081B070 | CBS | Work project list inquiry -- queries work/project list by service number |
| EKK0081A010 | CBS | Service contract table inquiry -- queries service contract details including price course code |
| callWribsvkRecover | CBS | Discount service contract recovery service IF -- restores a cancelled discount contract |
| callWribsvkCanselRecover | CBS | Pre-cancel cancellation recovery service IF -- undoes a pre-cancelled discount contract |
| KAP_SYSID | Constant | "KAP_SYSID" -- key name for the billing SYSID in working maps |
| KAP_SEIKY_KEI_NO | Constant | Key for the billing contract number in working maps |
| BASE_SVC_KEI_KAISEN_UCWK_NO | Constant | Key for the base service contract internal detail number in working maps |
| WRIB_SVC_CD | Constant | "wrib_svc_cd" -- key for the discount service code |
| WRIB_DSL_FLG | Constant | "WRIB_DSL_FLG" -- key for the discount DSL flag in working maps |
| WRIB_DSL_FLG_ON | Constant | "1" -- value indicating the discount DSL flag is on |