acquire-core-x/app/ui/index.html
hyeongwoo-choi c5692410f6 fix(ui): 매니페스트 헤더 주석의 글롭(*/)이 JS 주석 조기종료 → 블록 사망 버그 수정
/* 자동생성: app/src/*/svc/*.pgc ... */ 주석에서 src/*/ 의 */ 가 주석을 끝내고
잔여 텍스트(svc)가 코드로 평가되어 ReferenceError → SVC_SCREENS 미정의 → 메뉴 공백.
파싱은 통과(문법상 유효)하고 런타임에만 죽는 함정. 주석에서 */ 시퀀스 제거 후 재생성.
헤드리스 chromium 스크린샷으로 330화면 메뉴 + AC0101 렌더링 확인.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-20 03:01:42 +00:00

4569 lines
87 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="utf-8">
<title>ACQUIRE-CORE-X 매입업무포털</title>
<style>
/* Xplatform(UXStudio) 풍 내부 업무화면 스타일 */
* { box-sizing: border-box; margin: 0; padding: 0; }
html, body { height: 100%; font-family: "Malgun Gothic", "맑은 고딕", Dotum, sans-serif; font-size: 12px; color: #222; }
body { display: flex; flex-direction: column; background: #e8ebef; }
#titlebar { height: 44px; background: linear-gradient(#2c5d8f, #1d4269); color: #fff; display: flex; align-items: center; padding: 0 14px; flex-shrink: 0; }
#titlebar .logo { font-size: 16px; font-weight: bold; letter-spacing: 1px; }
#titlebar .sub { margin-left: 12px; font-size: 11px; color: #bcd3e8; }
#titlebar .right { margin-left: auto; font-size: 11px; color: #d6e4f2; }
#titlebar .right b { color: #ffd27f; }
#main { flex: 1; display: flex; min-height: 0; }
/* 좌측 메뉴 트리 */
#menuwrap { width: 232px; background: #f4f6f8; border-right: 1px solid #b8c2cc; display: flex; flex-direction: column; }
#menusearch { padding: 6px; border-bottom: 1px solid #ccd4dc; }
#menusearch input { width: 100%; height: 24px; border: 1px solid #9aa8b5; padding: 0 8px; font-size: 12px; }
#menu { flex: 1; overflow-y: auto; }
#menu .grp { padding: 7px 10px; background: #dbe3ea; border-bottom: 1px solid #c3cdd6; font-weight: bold; color: #2c4a66; cursor: pointer; display: flex; }
#menu .grp .cnt { margin-left: auto; font-weight: normal; color: #7b8a99; font-size: 10px; }
#menu .grp::before { content: "▸ "; color: #7b8a99; }
#menu .grp.open::before { content: "▾ "; }
#menu .itm { padding: 5px 8px 5px 22px; border-bottom: 1px solid #e6eaee; cursor: pointer; color: #333;
white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: none; }
#menu .grp.open + .itms .itm, #menu .itms.show .itm { display: block; }
#menu .itm:hover { background: #e8f0f8; }
#menu .itm.on { background: #cfe0f0; color: #14487c; font-weight: bold; }
#menu .itm .cd { color: #888; font-size: 10px; margin-right: 5px; font-family: Consolas, monospace; }
#content { flex: 1; display: flex; flex-direction: column; min-width: 0; }
#tabbar { height: 30px; background: #d5dce3; border-bottom: 1px solid #a9b4bf; display: flex; align-items: flex-end; padding: 0 8px; flex-shrink: 0; }
#tabbar .tab { padding: 5px 16px 4px; background: #fff; border: 1px solid #a9b4bf; border-bottom: none; font-weight: bold; color: #1d4269; }
#work { flex: 1; overflow: auto; padding: 12px; }
.panel { background: #fff; border: 1px solid #b0bac4; margin-bottom: 12px; }
.panel h3 { font-size: 12px; padding: 6px 10px; background: #eef2f6; border-bottom: 1px solid #ccd4dc; color: #1d4269; display: flex; align-items: center; }
.panel h3::before { content: ""; width: 4px; height: 12px; background: #2c5d8f; margin-right: 6px; flex-shrink: 0; }
.panel .bd { padding: 10px; }
table.frm { border-collapse: collapse; width: 100%; }
table.frm th { background: #f0f3f6; border: 1px solid #d3dae1; padding: 5px 8px; text-align: right; width: 150px; font-weight: normal; color: #445; }
table.frm td { border: 1px solid #d3dae1; padding: 3px 6px; }
table.frm input[type=text] { width: 100%; max-width: 280px; height: 22px; border: 1px solid #9aa8b5; padding: 0 6px; font-size: 12px; }
table.frm .fldcd { color: #98a4b0; font-size: 10px; margin-left: 8px; font-family: Consolas, monospace; }
.btnrow { margin-top: 10px; text-align: right; }
button { height: 26px; padding: 0 16px; margin-left: 6px; background: linear-gradient(#fdfdfd, #dfe5ea); border: 1px solid #8fa0b0; cursor: pointer; font-size: 12px; }
button.pri { background: linear-gradient(#3f76ad, #29578a); color: #fff; border-color: #1d4269; font-weight: bold; }
button:hover { filter: brightness(1.06); }
table.grd { border-collapse: collapse; width: 100%; }
table.grd th { background: #dfe6ec; border: 1px solid #b8c2cc; padding: 4px 6px; color: #2c4a66; }
table.grd td { border: 1px solid #d3dae1; padding: 3px 6px; background: #fff; }
table.grd tr:nth-child(even) td { background: #f7fafc; }
.num { text-align: right; font-family: Consolas, monospace; }
.ok { color: #0a7d2c; font-weight: bold; }
.err { color: #c22; font-weight: bold; }
#statusbar { height: 24px; background: #d5dce3; border-top: 1px solid #a9b4bf; display: flex; align-items: center; padding: 0 10px; font-size: 11px; color: #345; flex-shrink: 0; }
#statusbar .dot { width: 8px; height: 8px; border-radius: 50%; background: #23a54a; margin-right: 6px; }
</style>
</head>
<body>
<div id="titlebar">
<span class="logo">ACQUIRE-CORE-X</span>
<span class="sub">글로벌 매입업무포털 (Enduro/X · ECPG/PostgreSQL · XA)</span>
<span class="right">사용자: <b>매입운영1팀</b> | 영업일 <span id="bizdate"></span> | 화면 <span id="scrno">-</span> | 전체화면 <b id="scrcnt">-</b></span>
</div>
<div id="main">
<div id="menuwrap">
<div id="menusearch"><input id="q" placeholder="화면/서비스 검색 (예: 매입, SETTLE)"></div>
<div id="menu"></div>
</div>
<div id="content">
<div id="tabbar"><span class="tab" id="tabname">-</span></div>
<div id="work"></div>
<div id="statusbar"><span class="dot"></span><span id="stmsg">TP 모니터 연결됨 — 게이트웨이 /api/call</span></div>
</div>
</div>
<script>
/* === 화면 매니페스트 (인라인; 재생성: tools/gen_screens.py) === */
/* 자동생성 화면 매니페스트 - tools/gen_screens.py 가 svc 소스에서 추출 */
const SVC_SCREENS = [
{
"mod": "ac",
"modnm": "매입",
"svc": "ACQUIRE",
"desc": "* ACQUIRE.pgc - ac 모듈 서비스 ACQUIRE (one service = one file).",
"in": [
"T_MERCHANT",
"T_AMOUNT",
"T_BIZDATE"
],
"out": [
"T_PURCHASE_ID",
"T_FEE",
"T_NET"
]
},
{
"mod": "ac",
"modnm": "매입",
"svc": "ACQ_AMTFIX",
"desc": "금액 확정 정정: 직전 금액 조회 후 하우스 25bps 로 절대 재계산, 증감(delta) 회신.",
"in": [
"T_PURCHASE_ID",
"T_AMOUNT"
],
"out": [
"T_DELTA",
"T_FEE",
"T_NET"
]
},
{
"mod": "ac",
"modnm": "매입",
"svc": "ACQ_APPRLINK",
"desc": "* ACQ_APPRLINK.pgc - ac 모듈 서비스 ACQ_APPRLINK (one service = one file).",
"in": [
"T_PURCHASE_ID"
],
"out": []
},
{
"mod": "ac",
"modnm": "매입",
"svc": "ACQ_APPRMAP",
"desc": "* ACQ_APPRMAP.pgc - ac 모듈 서비스 ACQ_APPRMAP (one service = one file).",
"in": [
"T_PURCHASE_ID"
],
"out": [
"T_COUNT"
]
},
{
"mod": "ac",
"modnm": "매입",
"svc": "ACQ_CANCEL",
"desc": "* ACQ_CANCEL.pgc - ac 모듈 서비스 ACQ_CANCEL (one service = one file).",
"in": [
"T_PURCHASE_ID",
"T_AMOUNT",
"T_BIZDATE",
"T_REASON"
],
"out": [
"T_CANCEL_ID"
]
},
{
"mod": "ac",
"modnm": "매입",
"svc": "ACQ_CORRECT",
"desc": "* ACQ_CORRECT.pgc - ac 모듈 서비스 ACQ_CORRECT (one service = one file).",
"in": [
"T_PURCHASE_ID",
"T_AMOUNT",
"T_MERCHANT"
],
"out": [
"T_FEE",
"T_NET"
]
},
{
"mod": "ac",
"modnm": "매입",
"svc": "ACQ_DATECHG",
"desc": "* ACQ_DATECHG.pgc - ac 모듈 서비스 ACQ_DATECHG (one service = one file).",
"in": [
"T_PURCHASE_ID",
"T_BIZDATE"
],
"out": []
},
{
"mod": "ac",
"modnm": "매입",
"svc": "ACQ_DDC",
"desc": "* ACQ_DDC.pgc - ac 모듈 서비스 ACQ_DDC (one service = one file).",
"in": [
"T_PURCHASE_ID",
"T_FX_AMT",
"T_CCY",
"T_BIZDATE"
],
"out": [
"T_AMOUNT"
]
},
{
"mod": "ac",
"modnm": "매입",
"svc": "ACQ_DUPCHK",
"desc": "* ACQ_DUPCHK.pgc - ac 모듈 서비스 ACQ_DUPCHK (one service = one file).",
"in": [
"T_MERCHANT",
"T_BIZDATE",
"T_AMOUNT"
],
"out": [
"T_COUNT"
]
},
{
"mod": "ac",
"modnm": "매입",
"svc": "ACQ_EDC",
"desc": "* ACQ_EDC.pgc - ac 모듈 서비스 ACQ_EDC (one service = one file).",
"in": [
"T_MERCHANT",
"T_AMOUNT",
"T_BIZDATE"
],
"out": [
"T_PURCHASE_ID",
"T_FEE",
"T_NET"
]
},
{
"mod": "ac",
"modnm": "매입",
"svc": "ACQ_EDI",
"desc": "* ACQ_EDI.pgc - ac 모듈 서비스 ACQ_EDI (one service = one file).",
"in": [
"T_MERCHANT",
"T_DOCNO",
"T_BIZDATE",
"T_AMOUNT"
],
"out": []
},
{
"mod": "ac",
"modnm": "매입",
"svc": "ACQ_FEEADJ",
"desc": "* ACQ_FEEADJ.pgc - ac 모듈 서비스 ACQ_FEEADJ (one service = one file).",
"in": [
"T_PURCHASE_ID",
"T_DELTA",
"T_BIZDATE",
"T_REASON"
],
"out": [
"T_ADJ"
]
},
{
"mod": "ac",
"modnm": "매입",
"svc": "ACQ_FOREIGN",
"desc": "* ACQ_FOREIGN.pgc - ac 모듈 서비스 ACQ_FOREIGN (one service = one file).",
"in": [
"T_MERCHANT",
"T_AMOUNT",
"T_BIZDATE",
"T_CCY"
],
"out": [
"T_PURCHASE_ID",
"T_FEE"
]
},
{
"mod": "ac",
"modnm": "매입",
"svc": "ACQ_HOLD",
"desc": "매입 보류: 접수/대사(A,M) 상태만 보류로 전이, 반영 건수를 T_RC 로.",
"in": [
"T_PURCHASE_ID"
],
"out": [
"T_RC"
]
},
{
"mod": "ac",
"modnm": "매입",
"svc": "ACQ_INSTALL",
"desc": "* ACQ_INSTALL.pgc - ac 모듈 서비스 ACQ_INSTALL (one service = one file).",
"in": [
"T_PURCHASE_ID",
"T_INSTALL_N",
"T_AMOUNT",
"T_BIZDATE"
],
"out": [
"T_COUNT"
]
},
{
"mod": "ac",
"modnm": "매입",
"svc": "ACQ_ISSUERCLS",
"desc": "* ACQ_ISSUERCLS.pgc - ac 모듈 서비스 ACQ_ISSUERCLS (one service = one file).",
"in": [
"T_PURCHASE_ID",
"T_ISSUER"
],
"out": []
},
{
"mod": "ac",
"modnm": "매입",
"svc": "ACQ_LIMITCHK",
"desc": "* ACQ_LIMITCHK.pgc - ac 모듈 서비스 ACQ_LIMITCHK (one service = one file).",
"in": [
"T_MERCHANT",
"T_BIZDATE"
],
"out": [
"T_GROSS",
"T_RC"
]
},
{
"mod": "ac",
"modnm": "매입",
"svc": "ACQ_MERCHSUM",
"desc": "* ACQ_MERCHSUM.pgc - ac 모듈 서비스 ACQ_MERCHSUM (one service = one file).",
"in": [
"T_MERCHANT",
"T_BIZDATE"
],
"out": [
"T_COUNT",
"T_GROSS"
]
},
{
"mod": "ac",
"modnm": "매입",
"svc": "ACQ_PARTIAL",
"desc": "* ACQ_PARTIAL.pgc - ac 모듈 서비스 ACQ_PARTIAL (one service = one file).",
"in": [
"T_PURCHASE_ID",
"T_AMOUNT",
"T_BIZDATE"
],
"out": [
"T_CANCEL_ID"
]
},
{
"mod": "ac",
"modnm": "매입",
"svc": "ACQ_RECLASS",
"desc": "업종/분류 재지정: category 갱신 후 같은 가맹점에서 동일 분류 건수를 집계 회신.",
"in": [
"T_PURCHASE_ID",
"T_CATEGORY"
],
"out": [
"T_COUNT"
]
},
{
"mod": "ac",
"modnm": "매입",
"svc": "ACQ_REFUND",
"desc": "* ACQ_REFUND.pgc - ac 모듈 서비스 ACQ_REFUND (one service = one file).",
"in": [
"T_PURCHASE_ID",
"T_AMOUNT",
"T_BIZDATE",
"T_REASON"
],
"out": [
"T_CANCEL_ID"
]
},
{
"mod": "ac",
"modnm": "매입",
"svc": "ACQ_RELEASE",
"desc": "보류 해제: 직전 상태를 조회한 뒤 H->A 전이, 이전 상태를 함께 회신.",
"in": [
"T_PURCHASE_ID"
],
"out": [
"T_RC"
]
},
{
"mod": "ac",
"modnm": "매입",
"svc": "ACQ_REPROC",
"desc": "* ACQ_REPROC.pgc - ac 모듈 서비스 ACQ_REPROC (one service = one file).",
"in": [
"T_PURCHASE_ID"
],
"out": []
},
{
"mod": "ac",
"modnm": "매입",
"svc": "ACQ_SETTLELINK",
"desc": "정산 연계: 가맹점 미지정 시 매입에서 조회, settlement 링크 행(status='LINKED') 생성.",
"in": [
"T_PURCHASE_ID",
"T_NET",
"T_MERCHANT",
"T_BIZDATE"
],
"out": [
"T_SETTLE_ID"
]
},
{
"mod": "ac",
"modnm": "매입",
"svc": "ACQ_STATUS",
"desc": "* ACQ_STATUS.pgc - ac 모듈 서비스 ACQ_STATUS (one service = one file).",
"in": [
"T_PURCHASE_ID"
],
"out": []
},
{
"mod": "ac",
"modnm": "매입",
"svc": "ACQ_TAXINV",
"desc": "* ACQ_TAXINV.pgc - ac 모듈 서비스 ACQ_TAXINV (one service = one file).",
"in": [
"T_PURCHASE_ID",
"T_AMOUNT",
"T_MERCHANT",
"T_BIZDATE"
],
"out": [
"T_TAX"
]
},
{
"mod": "ac",
"modnm": "매입",
"svc": "ACQ_UNMATCH",
"desc": "* ACQ_UNMATCH.pgc - ac 모듈 서비스 ACQ_UNMATCH (one service = one file).",
"in": [
"T_BIZDATE"
],
"out": [
"T_COUNT"
]
},
{
"mod": "ac",
"modnm": "매입",
"svc": "ACQ_VOID",
"desc": "* ACQ_VOID.pgc - ac 모듈 서비스 ACQ_VOID (one service = one file).",
"in": [
"T_PURCHASE_ID",
"T_AMOUNT",
"T_BIZDATE"
],
"out": [
"T_CANCEL_ID"
]
},
{
"mod": "ac",
"modnm": "매입",
"svc": "ACQ_WHT",
"desc": "* ACQ_WHT.pgc - ac 모듈 서비스 ACQ_WHT (one service = one file).",
"in": [
"T_PURCHASE_ID",
"T_BIZDATE"
],
"out": [
"T_TAX"
]
},
{
"mod": "ac",
"modnm": "매입",
"svc": "ACQ_XFERLINK",
"desc": "* ACQ_XFERLINK.pgc - ac 모듈 서비스 ACQ_XFERLINK (one service = one file).",
"in": [
"T_PURCHASE_ID",
"T_AMOUNT",
"T_BIZDATE"
],
"out": []
},
{
"mod": "au",
"modnm": "승인/한도",
"svc": "AUTH",
"desc": "승인 접수: 한도 점검 후 authorization 원장 기록 + 한도 차감.",
"in": [
"T_KEY1",
"T_MERCHANT",
"T_AMOUNT",
"T_BIZDATE"
],
"out": [
"T_ID1",
"T_RC"
]
},
{
"mod": "au",
"modnm": "승인/한도",
"svc": "AUTH_APPROVE",
"desc": "승인 확정(pending->approved): dbio 래퍼로 상태만 A 로 확정.",
"in": [
"T_ID1"
],
"out": []
},
{
"mod": "au",
"modnm": "승인/한도",
"svc": "AUTH_CANCEL",
"desc": "승인 전체 취소 + 한도 원복.",
"in": [
"T_ID1",
"T_AMOUNT",
"T_KEY1",
"T_BIZDATE",
"T_REASON"
],
"out": [
"T_CANCEL_ID"
]
},
{
"mod": "au",
"modnm": "승인/한도",
"svc": "AUTH_CAPTURE",
"desc": "승인 매입확정(capture): 상태 A->M(매입대상).",
"in": [
"T_ID1"
],
"out": [
"T_RC"
]
},
{
"mod": "au",
"modnm": "승인/한도",
"svc": "AUTH_DECLINE",
"desc": "승인 거절 처리: 거절 사유와 함께 상태 D 로 갱신.",
"in": [
"T_ID1",
"T_REASON"
],
"out": []
},
{
"mod": "au",
"modnm": "승인/한도",
"svc": "AUTH_HISTORY",
"desc": "카드 승인 이력 건수 조회.",
"in": [
"T_KEY1"
],
"out": [
"T_COUNT"
]
},
{
"mod": "au",
"modnm": "승인/한도",
"svc": "AUTH_HOLD",
"desc": "승인 보류: 승인/예비(A,P) 상태만 보류(H)로 전이, 반영 건수를 T_RC 로.",
"in": [
"T_ID1"
],
"out": [
"T_RC"
]
},
{
"mod": "au",
"modnm": "승인/한도",
"svc": "AUTH_PARTCXL",
"desc": "부분 취소: 승인 금액 감액 + 한도 부분 원복.",
"in": [
"T_ID1",
"T_AMOUNT",
"T_KEY1",
"T_BIZDATE"
],
"out": [
"T_CANCEL_ID",
"T_AMOUNT"
]
},
{
"mod": "au",
"modnm": "승인/한도",
"svc": "AUTH_RELEASE",
"desc": "보류 해제: 직전 상태를 조회한 뒤 H->A 전이, 이전 상태를 함께 회신.",
"in": [
"T_ID1"
],
"out": [
"T_RC"
]
},
{
"mod": "au",
"modnm": "승인/한도",
"svc": "AUTH_RETRY",
"desc": "거절 승인 재시도 (상태 D->A 재승인).",
"in": [
"T_ID1",
"T_AMOUNT",
"T_KEY1"
],
"out": [
"T_RC"
]
},
{
"mod": "au",
"modnm": "승인/한도",
"svc": "AUTH_REVERSE",
"desc": "승인 역전(reversal) + 한도 원복.",
"in": [
"T_ID1",
"T_AMOUNT",
"T_KEY1"
],
"out": []
},
{
"mod": "au",
"modnm": "승인/한도",
"svc": "AUTH_ROUTE",
"desc": "승인 라우팅(발급사 BIN 기준 라우팅 코드 산출).",
"in": [
"T_KEY1"
],
"out": [
"T_ARG1"
]
},
{
"mod": "au",
"modnm": "승인/한도",
"svc": "AUTH_STATUS",
"desc": "승인 상태 조회 (dbio).",
"in": [
"T_ID1"
],
"out": []
},
{
"mod": "au",
"modnm": "승인/한도",
"svc": "AUTH_SUMMARY",
"desc": "가맹점 당일 승인 집계 upsert (dbio).",
"in": [
"T_MERCHANT",
"T_BIZDATE"
],
"out": [
"T_COUNT",
"T_GROSS"
]
},
{
"mod": "au",
"modnm": "승인/한도",
"svc": "AUTH_VOID",
"desc": "당일 승인 무효화(void) + 한도 원복.",
"in": [
"T_ID1",
"T_AMOUNT",
"T_KEY1",
"T_BIZDATE"
],
"out": [
"T_CANCEL_ID"
]
},
{
"mod": "au",
"modnm": "승인/한도",
"svc": "BLACKLIST_CHK",
"desc": "블랙리스트 카드 조회.",
"in": [
"T_KEY1"
],
"out": [
"T_RC"
]
},
{
"mod": "au",
"modnm": "승인/한도",
"svc": "CARD_VALIDATE",
"desc": "카드번호 Luhn 검증 (common lib).",
"in": [
"T_KEY1"
],
"out": [
"T_RC"
]
},
{
"mod": "au",
"modnm": "승인/한도",
"svc": "DCC_QUOTE",
"desc": "해외승인 DCC 환산 견적(통화 -> 원화).",
"in": [
"T_FX_AMT",
"T_CCY"
],
"out": [
"T_AMOUNT",
"T_ARG1"
]
},
{
"mod": "au",
"modnm": "승인/한도",
"svc": "FRAUD_DETECT",
"desc": "부정거래 스코어링 + 위험시 fraud_log 기록.",
"in": [
"T_ID1",
"T_AMOUNT",
"T_KEY1",
"T_BIZDATE"
],
"out": [
"T_ARG1",
"T_ID2",
"T_RC"
]
},
{
"mod": "au",
"modnm": "승인/한도",
"svc": "INSTALL_AUTH",
"desc": "할부 승인: 개월 수만큼 분할 승인 레코드.",
"in": [
"T_KEY1",
"T_MERCHANT",
"T_AMOUNT",
"T_INSTALL_N",
"T_BIZDATE"
],
"out": [
"T_COUNT"
]
},
{
"mod": "au",
"modnm": "승인/한도",
"svc": "LIMIT_CHK",
"desc": "카드 한도 점검 (사용가능 여부만 리턴).",
"in": [
"T_KEY1",
"T_AMOUNT"
],
"out": [
"T_AMT1",
"T_AMT2",
"T_RC"
]
},
{
"mod": "au",
"modnm": "승인/한도",
"svc": "LIMIT_DEC",
"desc": "한도 차감(사용금액 증가).",
"in": [
"T_AMOUNT",
"T_KEY1"
],
"out": []
},
{
"mod": "au",
"modnm": "승인/한도",
"svc": "LIMIT_INQ",
"desc": "한도 조회 (가용한도 계산).",
"in": [
"T_KEY1"
],
"out": [
"T_AMT1",
"T_AMT2",
"T_AMT3"
]
},
{
"mod": "au",
"modnm": "승인/한도",
"svc": "LIMIT_RST",
"desc": "한도 사용금액 초기화(일마감 원복).",
"in": [
"T_KEY1"
],
"out": []
},
{
"mod": "au",
"modnm": "승인/한도",
"svc": "LIMIT_SET",
"desc": "카드 한도 설정/등록 (dbio upsert).",
"in": [
"T_AMT1",
"T_KEY1"
],
"out": []
},
{
"mod": "au",
"modnm": "승인/한도",
"svc": "LIMIT_TEMP",
"desc": "임시 한도 상향 (temp_limit 저장 + 당일 상향).",
"in": [
"T_KEY1",
"T_AMT1"
],
"out": []
},
{
"mod": "au",
"modnm": "승인/한도",
"svc": "PREAUTH",
"desc": "예비승인(pre-authorization) 기록.",
"in": [
"T_KEY1",
"T_MERCHANT",
"T_BIZDATE",
"T_AMOUNT"
],
"out": [
"T_ID2"
]
},
{
"mod": "au",
"modnm": "승인/한도",
"svc": "PREAUTH_COMPLETE",
"desc": "예비승인 확정: preauth 소진 + 본승인 생성.",
"in": [
"T_ID2",
"T_BIZDATE"
],
"out": [
"T_ID1"
]
},
{
"mod": "au",
"modnm": "승인/한도",
"svc": "STANDIN",
"desc": "발급사 무응답 시 대리승인(STANDIN, 소액 한도 내).",
"in": [
"T_KEY1",
"T_MERCHANT",
"T_AMOUNT",
"T_BIZDATE"
],
"out": [
"T_RC",
"T_ID1"
]
},
{
"mod": "au",
"modnm": "승인/한도",
"svc": "VELOCITY_CHK",
"desc": "속도(velocity) 점검: 당일 카드 승인건수/합계.",
"in": [
"T_KEY1",
"T_BIZDATE"
],
"out": [
"T_COUNT",
"T_GROSS",
"T_RC"
]
},
{
"mod": "cl",
"modnm": "마감",
"svc": "CL_AGGREGATE",
"desc": "마감 총계 재집계 후 close_log 반영.",
"in": [
"T_ID1",
"T_BIZDATE"
],
"out": [
"T_COUNT",
"T_GROSS"
]
},
{
"mod": "cl",
"modnm": "마감",
"svc": "CL_ALERT",
"desc": "미마감 경보: 당일 대사완료(M) 미전기 매입 건수.",
"in": [
"T_BIZDATE"
],
"out": [
"T_COUNT",
"T_RC"
]
},
{
"mod": "cl",
"modnm": "마감",
"svc": "CL_APPROVE",
"desc": "마감 승인: 상태 A.",
"in": [
"T_ID1"
],
"out": []
},
{
"mod": "cl",
"modnm": "마감",
"svc": "CL_ARCHIVE",
"desc": "마감 아카이브: 승인/완료 마감을 보관 상태로(memo 표시).",
"in": [
"T_ID1"
],
"out": [
"T_COUNT"
]
},
{
"mod": "cl",
"modnm": "마감",
"svc": "CL_BALVERIFY",
"desc": "잔액 검증: 스냅샷 net 합 vs close_log total 비교.",
"in": [
"T_ID1"
],
"out": [
"T_AMT2",
"T_AMT3",
"T_DELTA"
]
},
{
"mod": "cl",
"modnm": "마감",
"svc": "CL_CANCEL",
"desc": "마감 취소: 상태 X.",
"in": [
"T_ID1"
],
"out": []
},
{
"mod": "cl",
"modnm": "마감",
"svc": "CL_CONFIRM",
"desc": "마감 확정: 상태 C.",
"in": [
"T_ID1"
],
"out": []
},
{
"mod": "cl",
"modnm": "마감",
"svc": "CL_DAILY",
"desc": "일 마감: 당일 매입 집계 후 마감이력(DAILY) 생성.",
"in": [
"T_BIZDATE"
],
"out": [
"T_ID1"
]
},
{
"mod": "cl",
"modnm": "마감",
"svc": "CL_DIFFCHK",
"desc": "차액 점검: close_log total vs 스냅샷 gross 합.",
"in": [
"T_ID1"
],
"out": [
"T_DELTA",
"T_RC"
]
},
{
"mod": "cl",
"modnm": "마감",
"svc": "CL_INQUIRY",
"desc": "마감 조회: close_type/기간/상태/총건수 반환.",
"in": [
"T_ID1"
],
"out": [
"T_COUNT",
"T_GROSS"
]
},
{
"mod": "cl",
"modnm": "마감",
"svc": "CL_LOCK",
"desc": "기간 잠금: cl_period_lock upsert(locked=true) + 마감 L.",
"in": [
"T_ID1",
"T_STR1",
"T_BIZDATE"
],
"out": []
},
{
"mod": "cl",
"modnm": "마감",
"svc": "CL_MIDCLOSE",
"desc": "중간 마감: 당일 중간 스냅 마감이력(MID) 생성.",
"in": [
"T_BIZDATE"
],
"out": [
"T_ID1",
"T_COUNT"
]
},
{
"mod": "cl",
"modnm": "마감",
"svc": "CL_MONTHLY",
"desc": "월 마감: 해당 월(YYYY-MM) 매입 집계 후 마감이력(MONTHLY).",
"in": [
"T_BIZDATE",
"T_STR1"
],
"out": [
"T_ID1"
]
},
{
"mod": "cl",
"modnm": "마감",
"svc": "CL_PERIOD",
"desc": "기간 마감 개시(open): close_log 를 O 상태로 등록.",
"in": [
"T_BIZDATE",
"T_STR1",
"T_STR2"
],
"out": [
"T_ID1"
]
},
{
"mod": "cl",
"modnm": "마감",
"svc": "CL_PURGE",
"desc": "취소 마감 정리: 오래된 X 상태 마감과 그 스냅샷 삭제.",
"in": [
"T_BIZDATE"
],
"out": [
"T_COUNT"
]
},
{
"mod": "cl",
"modnm": "마감",
"svc": "CL_QUARTER",
"desc": "분기 마감: 분기 프리픽스(YYYY-MM LIKE)로 집계.",
"in": [
"T_BIZDATE",
"T_STR1"
],
"out": [
"T_ID1"
]
},
{
"mod": "cl",
"modnm": "마감",
"svc": "CL_RECLOSE",
"desc": "재마감: 상태 R 로 표시하고 총계 재집계.",
"in": [
"T_ID1",
"T_BIZDATE"
],
"out": [
"T_COUNT"
]
},
{
"mod": "cl",
"modnm": "마감",
"svc": "CL_RECON",
"desc": "마감 대사: 실제 매입건수 vs close_log txn_count 대사.",
"in": [
"T_ID1",
"T_BIZDATE"
],
"out": [
"T_COUNT",
"T_DELTA",
"T_RC"
]
},
{
"mod": "cl",
"modnm": "마감",
"svc": "CL_REPORT",
"desc": "마감 리포트: 특정 마감의 스냅샷 건수/총매출.",
"in": [
"T_ID1"
],
"out": [
"T_COUNT",
"T_GROSS"
]
},
{
"mod": "cl",
"modnm": "마감",
"svc": "CL_RESTORE",
"desc": "마감 복원: 취소(X) 마감을 개시(O) 상태로 되돌림.",
"in": [
"T_ID1"
],
"out": []
},
{
"mod": "cl",
"modnm": "마감",
"svc": "CL_ROLLBACK",
"desc": "마감 롤백: 스냅샷 삭제 + 상태 O 로 복귀.",
"in": [
"T_ID1"
],
"out": [
"T_COUNT"
]
},
{
"mod": "cl",
"modnm": "마감",
"svc": "CL_SEQ",
"desc": "마감 순번 발번(dbio upsert).",
"in": [
"T_STR2"
],
"out": [
"T_ID2"
]
},
{
"mod": "cl",
"modnm": "마감",
"svc": "CL_SNAPSHOT",
"desc": "마감 스냅샷: merchant_summary 를 close_id 로 고정 복사.",
"in": [
"T_ID1",
"T_BIZDATE",
"T_STR1"
],
"out": [
"T_COUNT"
]
},
{
"mod": "cl",
"modnm": "마감",
"svc": "CL_STATS",
"desc": "마감 통계: close_type 별 마감 건수/총액.",
"in": [
"T_STR2"
],
"out": [
"T_COUNT",
"T_GROSS"
]
},
{
"mod": "cl",
"modnm": "마감",
"svc": "CL_STATUS",
"desc": "마감 상태 조회(dbio getter).",
"in": [
"T_ID1"
],
"out": []
},
{
"mod": "cl",
"modnm": "마감",
"svc": "CL_SUMMARY",
"desc": "마감 요약: 스냅샷 gross/fee/net 합계 반환.",
"in": [
"T_ID1"
],
"out": [
"T_GROSS",
"T_FEE",
"T_NET"
]
},
{
"mod": "cl",
"modnm": "마감",
"svc": "CL_UNCLOSED",
"desc": "미마감일 점검: close_log 없는 매입 영업일 건수.",
"in": [],
"out": [
"T_COUNT"
]
},
{
"mod": "cl",
"modnm": "마감",
"svc": "CL_UNLOCK",
"desc": "기간 잠금 해제.",
"in": [
"T_STR1",
"T_BIZDATE"
],
"out": [
"T_COUNT"
]
},
{
"mod": "cl",
"modnm": "마감",
"svc": "CL_VERIFY",
"desc": "마감 검증: close_log 총건수 vs 실제 매입건수 비교.",
"in": [
"T_ID1",
"T_BIZDATE"
],
"out": [
"T_COUNT",
"T_RC"
]
},
{
"mod": "cl",
"modnm": "마감",
"svc": "CL_YEAREND",
"desc": "연말 마감: 연도(YYYY) 프리픽스로 집계.",
"in": [
"T_BIZDATE"
],
"out": [
"T_ID1"
]
},
{
"mod": "cm",
"modnm": "공통",
"svc": "CM_ADDDAYS",
"desc": "* CM_ADDDAYS.pgc - cm 모듈 서비스 CM_ADDDAYS (one service = one file).",
"in": [
"T_STR1",
"T_ARG1"
],
"out": [
"T_STR3"
]
},
{
"mod": "cm",
"modnm": "공통",
"svc": "CM_AMT_ROUND",
"desc": "금액 반올림 (순수 계산): 단위(T_ARG1)로 반올림. */",
"in": [
"T_AMOUNT",
"T_ARG1"
],
"out": [
"T_AMT1"
]
},
{
"mod": "cm",
"modnm": "공통",
"svc": "CM_AMT_SPLIT",
"desc": "금액 균등 분할 (순수 계산): n등분 + 잔액. */",
"in": [
"T_AMOUNT",
"T_ARG1"
],
"out": [
"T_AMT1",
"T_AMT2",
"T_COUNT"
]
},
{
"mod": "cm",
"modnm": "공통",
"svc": "CM_BIZDAY",
"desc": "* CM_BIZDAY.pgc - cm 모듈 서비스 CM_BIZDAY (one service = one file).",
"in": [],
"out": [
"T_BIZDATE"
]
},
{
"mod": "cm",
"modnm": "공통",
"svc": "CM_CACHE_INV",
"desc": "캐시 무효화 (순수 처리: 버전 증가 표시). */",
"in": [
"T_STR1"
],
"out": [
"T_RC",
"T_MSG"
]
},
{
"mod": "cm",
"modnm": "공통",
"svc": "CM_CACHE_LOAD",
"desc": "* CM_CACHE_LOAD.pgc - cm 모듈 서비스 CM_CACHE_LOAD (one service = one file).",
"in": [
"T_STR1"
],
"out": [
"T_COUNT"
]
},
{
"mod": "cm",
"modnm": "공통",
"svc": "CM_CHECKDIGIT",
"desc": "* CM_CHECKDIGIT.pgc - cm 모듈 서비스 CM_CHECKDIGIT (one service = one file).",
"in": [
"T_STR2"
],
"out": [
"T_ARG1",
"T_STR4"
]
},
{
"mod": "cm",
"modnm": "공통",
"svc": "CM_CODE",
"desc": "* CM_CODE.pgc - cm 모듈 서비스 CM_CODE (one service = one file).",
"in": [
"T_STR1",
"T_STR2"
],
"out": [
"T_RC"
]
},
{
"mod": "cm",
"modnm": "공통",
"svc": "CM_CODENAME",
"desc": "* CM_CODENAME.pgc - cm 모듈 서비스 CM_CODENAME (one service = one file).",
"in": [
"T_STR1",
"T_STR2"
],
"out": [
"T_STR3"
]
},
{
"mod": "cm",
"modnm": "공통",
"svc": "CM_CRC",
"desc": "* CM_CRC.pgc - cm 모듈 서비스 CM_CRC (one service = one file).",
"in": [
"T_STR1"
],
"out": [
"T_STR4",
"T_ARG1"
]
},
{
"mod": "cm",
"modnm": "공통",
"svc": "CM_ERRMSG",
"desc": "* CM_ERRMSG.pgc - cm 모듈 서비스 CM_ERRMSG (one service = one file).",
"in": [
"T_STR1",
"T_STR2"
],
"out": [
"T_MSG"
]
},
{
"mod": "cm",
"modnm": "공통",
"svc": "CM_FMT_AMT",
"desc": "* CM_FMT_AMT.pgc - cm 모듈 서비스 CM_FMT_AMT (one service = one file).",
"in": [
"T_AMOUNT"
],
"out": [
"T_STR4"
]
},
{
"mod": "cm",
"modnm": "공통",
"svc": "CM_FMT_DATE",
"desc": "날짜 포맷 변환 (순수 계산): YYYYMMDD -> YYYY-MM-DD. */",
"in": [
"T_STR1"
],
"out": [
"T_STR3"
]
},
{
"mod": "cm",
"modnm": "공통",
"svc": "CM_FX",
"desc": "* CM_FX.pgc - cm 모듈 서비스 CM_FX (one service = one file).",
"in": [
"T_CCY",
"T_BIZDATE"
],
"out": [
"T_ARG1"
]
},
{
"mod": "cm",
"modnm": "공통",
"svc": "CM_FX_CONV",
"desc": "환율 환산 (cm_fx_rate + compute): 외화 -> 원화. */",
"in": [
"T_CCY",
"T_BIZDATE",
"T_FX_AMT"
],
"out": [
"T_AMOUNT",
"T_ARG1"
]
},
{
"mod": "cm",
"modnm": "공통",
"svc": "CM_HOLIDAY_CHK",
"desc": "* CM_HOLIDAY_CHK.pgc - cm 모듈 서비스 CM_HOLIDAY_CHK (one service = one file).",
"in": [
"T_STR1"
],
"out": [
"T_RC"
]
},
{
"mod": "cm",
"modnm": "공통",
"svc": "CM_INTEREST",
"desc": "단리 이자 계산 (순수 계산): 원금*연이율(bps)*일수/(10000*365). */",
"in": [
"T_AMOUNT",
"T_ARG1",
"T_ARG2"
],
"out": [
"T_AMT1"
]
},
{
"mod": "cm",
"modnm": "공통",
"svc": "CM_LOG",
"desc": "* CM_LOG.pgc - cm 모듈 서비스 CM_LOG (one service = one file).",
"in": [
"T_SVCNAME",
"T_MSG",
"T_BIZDATE"
],
"out": [
"T_ID1"
]
},
{
"mod": "cm",
"modnm": "공통",
"svc": "CM_LUHN",
"desc": "* CM_LUHN.pgc - cm 모듈 서비스 CM_LUHN (one service = one file).",
"in": [
"T_STR5"
],
"out": [
"T_RC"
]
},
{
"mod": "cm",
"modnm": "공통",
"svc": "CM_MASK",
"desc": "카드번호 마스킹 (순수 계산): 앞6 뒤4 노출. */",
"in": [
"T_STR5"
],
"out": [
"T_STR4"
]
},
{
"mod": "cm",
"modnm": "공통",
"svc": "CM_MONTHEND",
"desc": "* CM_MONTHEND.pgc - cm 모듈 서비스 CM_MONTHEND (one service = one file).",
"in": [
"T_STR1"
],
"out": [
"T_STR3",
"T_ARG1"
]
},
{
"mod": "cm",
"modnm": "공통",
"svc": "CM_NETTING_CALC",
"desc": "네팅 계산 (순수 계산): 차변-대변. */",
"in": [
"T_AMT1",
"T_AMT2"
],
"out": [
"T_NET",
"T_RC"
]
},
{
"mod": "cm",
"modnm": "공통",
"svc": "CM_NEXTBIZ",
"desc": "* CM_NEXTBIZ.pgc - cm 모듈 서비스 CM_NEXTBIZ (one service = one file).",
"in": [
"T_STR1"
],
"out": [
"T_STR3"
]
},
{
"mod": "cm",
"modnm": "공통",
"svc": "CM_PARAM",
"desc": "* CM_PARAM.pgc - cm 모듈 서비스 CM_PARAM (one service = one file).",
"in": [
"T_STR1"
],
"out": [
"T_STR3"
]
},
{
"mod": "cm",
"modnm": "공통",
"svc": "CM_PARAM_SET",
"desc": "* CM_PARAM_SET.pgc - cm 모듈 서비스 CM_PARAM_SET (one service = one file).",
"in": [
"T_STR1",
"T_STR3"
],
"out": []
},
{
"mod": "cm",
"modnm": "공통",
"svc": "CM_PING",
"desc": "* CM_PING.pgc - cm 모듈 서비스 CM_PING (one service = one file).",
"in": [],
"out": [
"T_MSG",
"T_RC"
]
},
{
"mod": "cm",
"modnm": "공통",
"svc": "CM_PRORATE",
"desc": "일할 계산 (순수 계산): 금액*사용일/총일. */",
"in": [
"T_AMOUNT",
"T_ARG1",
"T_ARG2"
],
"out": [
"T_AMT1"
]
},
{
"mod": "cm",
"modnm": "공통",
"svc": "CM_SEQ",
"desc": "* CM_SEQ.pgc - cm 모듈 서비스 CM_SEQ (one service = one file).",
"in": [
"T_KEY1"
],
"out": [
"T_ARG1"
]
},
{
"mod": "cm",
"modnm": "공통",
"svc": "CM_STATUS",
"desc": "모듈 상태: 파라미터 건수 조회로 DB 연결 확인. */",
"in": [],
"out": [
"T_COUNT",
"T_RC",
"T_STATUS"
]
},
{
"mod": "cm",
"modnm": "공통",
"svc": "CM_WEEKDAY",
"desc": "* CM_WEEKDAY.pgc - cm 모듈 서비스 CM_WEEKDAY (one service = one file).",
"in": [
"T_STR1"
],
"out": [
"T_ARG1",
"T_STR3",
"T_RC"
]
},
{
"mod": "lg",
"modnm": "원장",
"svc": "LG_ACCTSUM",
"desc": "계정 잔액 재집계(dbio) 후 잔액 반환.",
"in": [
"T_KEY1",
"T_BIZDATE"
],
"out": [
"T_NET"
]
},
{
"mod": "lg",
"modnm": "원장",
"svc": "LG_ACQPOST",
"desc": "매입 전기: 차변 RECV=amount, 대변 MERCH_PAY=net + FEE_INC=fee.",
"in": [
"T_BIZDATE",
"T_MERCHANT",
"T_AMOUNT",
"T_FEE",
"T_NET",
"T_PURCHASE_ID"
],
"out": [
"T_ID1"
]
},
{
"mod": "lg",
"modnm": "원장",
"svc": "LG_ADJUST",
"desc": "조정 전표: 부호에 따라 차변/대변 단일 분개.",
"in": [
"T_KEY1",
"T_BIZDATE",
"T_MERCHANT",
"T_DELTA",
"T_PURCHASE_ID"
],
"out": [
"T_ID1"
]
},
{
"mod": "lg",
"modnm": "원장",
"svc": "LG_APPLY",
"desc": "전표 전기확정(P): 라인들의 계정잔액을 잔액테이블에 반영.",
"in": [
"T_ID1",
"T_BIZDATE"
],
"out": []
},
{
"mod": "lg",
"modnm": "원장",
"svc": "LG_BALCHK",
"desc": "전표 단위 대차 균형 점검 (차변합 vs 대변합).",
"in": [
"T_ID1"
],
"out": [
"T_AMT2",
"T_AMT3",
"T_RC"
]
},
{
"mod": "lg",
"modnm": "원장",
"svc": "LG_CARRY",
"desc": "이월: 당일 계정잔액을 익영업일 개시잔액으로 이월(upsert).",
"in": [
"T_BIZDATE"
],
"out": [
"T_COUNT"
]
},
{
"mod": "lg",
"modnm": "원장",
"svc": "LG_CLOSE_LINK",
"desc": "마감연계: 전표 라인 closed + 전표 상태 S(마감연계).",
"in": [
"T_ID1"
],
"out": [
"T_COUNT"
]
},
{
"mod": "lg",
"modnm": "원장",
"svc": "LG_CONFIRM",
"desc": "전표 확정: 대차 균형이면 P로 확정, 아니면 실패.",
"in": [
"T_ID1"
],
"out": [
"T_RC"
]
},
{
"mod": "lg",
"modnm": "원장",
"svc": "LG_CORRECT",
"desc": "원장 라인 금액 정정.",
"in": [
"T_ID1",
"T_AMOUNT"
],
"out": []
},
{
"mod": "lg",
"modnm": "원장",
"svc": "LG_CREDIT",
"desc": "기존 전표에 대변(C) 분개 1줄 추가.",
"in": [
"T_ID1",
"T_AMOUNT",
"T_KEY1",
"T_BIZDATE",
"T_MERCHANT"
],
"out": []
},
{
"mod": "lg",
"modnm": "원장",
"svc": "LG_DAILYSUM",
"desc": "당일 계정별 잔액 일괄 재집계(전 계정 upsert).",
"in": [
"T_BIZDATE"
],
"out": [
"T_COUNT"
]
},
{
"mod": "lg",
"modnm": "원장",
"svc": "LG_DEBIT",
"desc": "기존 전표에 차변(D) 분개 1줄 추가.",
"in": [
"T_ID1",
"T_AMOUNT",
"T_KEY1",
"T_BIZDATE",
"T_MERCHANT"
],
"out": []
},
{
"mod": "lg",
"modnm": "원장",
"svc": "LG_DIFFCHK",
"desc": "당일 전체 대차 차액 점검(총차변-총대변).",
"in": [
"T_BIZDATE"
],
"out": [
"T_AMT2",
"T_AMT3",
"T_DELTA",
"T_RC"
]
},
{
"mod": "lg",
"modnm": "원장",
"svc": "LG_DOUBLE",
"desc": "신규 전표 즉시 전기(posted): 차변/대변 + 양 계정잔액 반영.",
"in": [
"T_KEY1",
"T_KEY2",
"T_BIZDATE",
"T_MERCHANT",
"T_AMOUNT",
"T_PURCHASE_ID"
],
"out": [
"T_ID1"
]
},
{
"mod": "lg",
"modnm": "원장",
"svc": "LG_FEEPOST",
"desc": "수수료수익 전기: 차변 RECV=fee, 대변 FEE_INC=fee.",
"in": [
"T_BIZDATE",
"T_MERCHANT",
"T_FEE",
"T_PURCHASE_ID"
],
"out": [
"T_ID1"
]
},
{
"mod": "lg",
"modnm": "원장",
"svc": "LG_INQUIRY",
"desc": "전표 상태 조회(dbio).",
"in": [
"T_ID1"
],
"out": []
},
{
"mod": "lg",
"modnm": "원장",
"svc": "LG_JOURNAL",
"desc": "당일 분개(원장 라인) 건수 조회.",
"in": [
"T_BIZDATE"
],
"out": [
"T_COUNT"
]
},
{
"mod": "lg",
"modnm": "원장",
"svc": "LG_MERCHBAL",
"desc": "가맹점 잔액 재집계(dbio).",
"in": [
"T_MERCHANT",
"T_BIZDATE"
],
"out": []
},
{
"mod": "lg",
"modnm": "원장",
"svc": "LG_MONTHLYSUM",
"desc": "월 계정과목별 차/대 집계 건수 조회(YYYY-MM).",
"in": [
"T_STR1",
"T_BIZDATE"
],
"out": [
"T_COUNT",
"T_GROSS"
]
},
{
"mod": "lg",
"modnm": "원장",
"svc": "LG_POST",
"desc": "전표 작성(draft) + 차변/대변 균형 분개 2줄.",
"in": [
"T_KEY1",
"T_KEY2",
"T_BIZDATE",
"T_MERCHANT",
"T_PURCHASE_ID",
"T_AMOUNT"
],
"out": [
"T_ID1"
]
},
{
"mod": "lg",
"modnm": "원장",
"svc": "LG_RECALC",
"desc": "계정 잔액 원장 라인 기준 재계산(dbio).",
"in": [
"T_KEY1",
"T_BIZDATE"
],
"out": []
},
{
"mod": "lg",
"modnm": "원장",
"svc": "LG_REVERSE",
"desc": "역분개 전표: 원전표 라인의 차/대를 뒤집어 신규 전표에 복사.",
"in": [
"T_ID1",
"T_BIZDATE"
],
"out": [
"T_ID2",
"T_COUNT"
]
},
{
"mod": "lg",
"modnm": "원장",
"svc": "LG_ROLLFWD",
"desc": "전 계정 잔액 익일 이월(개시잔액 롤포워드).",
"in": [
"T_BIZDATE"
],
"out": [
"T_COUNT"
]
},
{
"mod": "lg",
"modnm": "원장",
"svc": "LG_SETTLEPOST",
"desc": "정산 전기: 차변 MERCH_PAY, 대변 CASH (net).",
"in": [
"T_BIZDATE",
"T_MERCHANT",
"T_NET",
"T_PURCHASE_ID"
],
"out": [
"T_ID1"
]
},
{
"mod": "lg",
"modnm": "원장",
"svc": "LG_STATS",
"desc": "당일 전표/원장 통계(전표수, 총차변).",
"in": [
"T_BIZDATE"
],
"out": [
"T_COUNT",
"T_GROSS"
]
},
{
"mod": "lg",
"modnm": "원장",
"svc": "LG_STATUS",
"desc": "전표 상태 직접 변경(setter).",
"in": [
"T_ID1",
"T_STATUS"
],
"out": []
},
{
"mod": "lg",
"modnm": "원장",
"svc": "LG_TRANSFER",
"desc": "계정간 대체: 출금계정 대변, 입금계정 차변(균형).",
"in": [
"T_KEY1",
"T_KEY2",
"T_BIZDATE",
"T_MERCHANT",
"T_AMOUNT"
],
"out": [
"T_ID1"
]
},
{
"mod": "lg",
"modnm": "원장",
"svc": "LG_TRIALBAL",
"desc": "계정별 시산표 산출 후 lg_trial_bal upsert.",
"in": [
"T_KEY1",
"T_BIZDATE"
],
"out": [
"T_AMT2",
"T_AMT3",
"T_DELTA"
]
},
{
"mod": "lg",
"modnm": "원장",
"svc": "LG_UNSETTLED",
"desc": "미마감(status=posted) 원장 라인 건수.",
"in": [
"T_BIZDATE"
],
"out": [
"T_COUNT"
]
},
{
"mod": "lg",
"modnm": "원장",
"svc": "LG_VOUCHER",
"desc": "빈 전표 헤더 생성(작성 상태).",
"in": [
"T_PURCHASE_ID",
"T_STR2",
"T_BIZDATE",
"T_MSG"
],
"out": [
"T_ID1"
]
},
{
"mod": "mg",
"modnm": "전문게이트웨이",
"svc": "MG_ACK",
"desc": "* MG_ACK.pgc - mg 모듈 서비스 MG_ACK (one service = one file).",
"in": [
"T_ID1"
],
"out": [
"T_STATUS"
]
},
{
"mod": "mg",
"modnm": "전문게이트웨이",
"svc": "MG_BITMAP",
"desc": "* MG_BITMAP.pgc - mg 모듈 서비스 MG_BITMAP (one service = one file).",
"in": [
"T_ARG1",
"T_ID1"
],
"out": [
"T_STR6"
]
},
{
"mod": "mg",
"modnm": "전문게이트웨이",
"svc": "MG_CHANAUTH",
"desc": "채널 인증: UP/SIGNON 상태만 통과. */",
"in": [
"T_CHANNEL"
],
"out": [
"T_RC",
"T_STATUS"
]
},
{
"mod": "mg",
"modnm": "전문게이트웨이",
"svc": "MG_CHANSTAT",
"desc": "* MG_CHANSTAT.pgc - mg 모듈 서비스 MG_CHANSTAT (one service = one file).",
"in": [
"T_CHANNEL"
],
"out": [
"T_STATUS"
]
},
{
"mod": "mg",
"modnm": "전문게이트웨이",
"svc": "MG_CONFIRM",
"desc": "* MG_CONFIRM.pgc - mg 모듈 서비스 MG_CONFIRM (one service = one file).",
"in": [
"T_ID1"
],
"out": [
"T_STATUS"
]
},
{
"mod": "mg",
"modnm": "전문게이트웨이",
"svc": "MG_CONVERT",
"desc": "* MG_CONVERT.pgc - mg 모듈 서비스 MG_CONVERT (one service = one file).",
"in": [
"T_CHANNEL",
"T_STR1",
"T_STR3",
"T_BIZDATE",
"T_AMOUNT"
],
"out": [
"T_STR1",
"T_ID1"
]
},
{
"mod": "mg",
"modnm": "전문게이트웨이",
"svc": "MG_DEQUEUE",
"desc": "* MG_DEQUEUE.pgc - mg 모듈 서비스 MG_DEQUEUE (one service = one file).",
"in": [],
"out": [
"T_COUNT",
"T_ID2",
"T_ARG1",
"T_CHANNEL",
"T_STR3"
]
},
{
"mod": "mg",
"modnm": "전문게이트웨이",
"svc": "MG_ECHO",
"desc": "* MG_ECHO.pgc - mg 모듈 서비스 MG_ECHO (one service = one file).",
"in": [
"T_CHANNEL",
"T_BIZDATE"
],
"out": [
"T_ID1",
"T_STATUS"
]
},
{
"mod": "mg",
"modnm": "전문게이트웨이",
"svc": "MG_ERRMSG",
"desc": "* MG_ERRMSG.pgc - mg 모듈 서비스 MG_ERRMSG (one service = one file).",
"in": [
"T_CHANNEL",
"T_STR1",
"T_STR3",
"T_BIZDATE",
"T_RC"
],
"out": [
"T_ID1"
]
},
{
"mod": "mg",
"modnm": "전문게이트웨이",
"svc": "MG_HEALTH",
"desc": "게이트웨이 헬스: 활성 채널 수 조회. */",
"in": [],
"out": [
"T_COUNT",
"T_RC"
]
},
{
"mod": "mg",
"modnm": "전문게이트웨이",
"svc": "MG_ISO8583",
"desc": "* MG_ISO8583.pgc - mg 모듈 서비스 MG_ISO8583 (one service = one file).",
"in": [
"T_CHANNEL",
"T_STR3",
"T_BIZDATE",
"T_AMOUNT"
],
"out": [
"T_STR1",
"T_STR4",
"T_AMOUNT",
"T_ID1"
]
},
{
"mod": "mg",
"modnm": "전문게이트웨이",
"svc": "MG_KEYEXCH",
"desc": "키 교환: 키버전 채번 + 세션키 갱신. */",
"in": [
"T_CHANNEL",
"T_KEY1"
],
"out": [
"T_ARG2"
]
},
{
"mod": "mg",
"modnm": "전문게이트웨이",
"svc": "MG_LOG",
"desc": "* MG_LOG.pgc - mg 모듈 서비스 MG_LOG (one service = one file).",
"in": [
"T_CHANNEL",
"T_BIZDATE"
],
"out": [
"T_COUNT"
]
},
{
"mod": "mg",
"modnm": "전문게이트웨이",
"svc": "MG_MAC",
"desc": "simple additive 4-hex MAC/checksum over a buffer (전문 무결성 데모). */",
"in": [
"T_STR3",
"T_ID1"
],
"out": [
"T_KEY1"
]
},
{
"mod": "mg",
"modnm": "전문게이트웨이",
"svc": "MG_NACK",
"desc": "* MG_NACK.pgc - mg 모듈 서비스 MG_NACK (one service = one file).",
"in": [
"T_ID1",
"T_RC"
],
"out": [
"T_STATUS"
]
},
{
"mod": "mg",
"modnm": "전문게이트웨이",
"svc": "MG_PACK",
"desc": "고정길이 전문 조립 (순수 계산): MTI(4)+처리코드(6)+금액(12). */",
"in": [
"T_STR1",
"T_STR4",
"T_AMOUNT"
],
"out": [
"T_STR3",
"T_COUNT"
]
},
{
"mod": "mg",
"modnm": "전문게이트웨이",
"svc": "MG_PARSE",
"desc": "* MG_PARSE.pgc - mg 모듈 서비스 MG_PARSE (one service = one file).",
"in": [
"T_STR3"
],
"out": [
"T_STR1",
"T_STR4",
"T_COUNT"
]
},
{
"mod": "mg",
"modnm": "전문게이트웨이",
"svc": "MG_QUEUE",
"desc": "* MG_QUEUE.pgc - mg 모듈 서비스 MG_QUEUE (one service = one file).",
"in": [
"T_CHANNEL",
"T_STR1",
"T_STR3",
"T_BIZDATE",
"T_ARG1"
],
"out": [
"T_ID2",
"T_ARG1"
]
},
{
"mod": "mg",
"modnm": "전문게이트웨이",
"svc": "MG_RECV",
"desc": "* MG_RECV.pgc - mg 모듈 서비스 MG_RECV (one service = one file).",
"in": [
"T_CHANNEL",
"T_STR1",
"T_STR3",
"T_STR5",
"T_BIZDATE",
"T_AMOUNT"
],
"out": [
"T_ARG1",
"T_ID1"
]
},
{
"mod": "mg",
"modnm": "전문게이트웨이",
"svc": "MG_RESEND",
"desc": "전문 재전송: STAN 으로 원전문 찾아 큐에 적재. */",
"in": [
"T_ARG1",
"T_CHANNEL",
"T_STR1",
"T_STR3",
"T_BIZDATE"
],
"out": [
"T_ID2"
]
},
{
"mod": "mg",
"modnm": "전문게이트웨이",
"svc": "MG_RETRY",
"desc": "큐 재시도: retry_cnt +1, status=Q. */",
"in": [
"T_ID2"
],
"out": [
"T_COUNT"
]
},
{
"mod": "mg",
"modnm": "전문게이트웨이",
"svc": "MG_ROUTE",
"desc": "* MG_ROUTE.pgc - mg 모듈 서비스 MG_ROUTE (one service = one file).",
"in": [
"T_CHANNEL",
"T_STR1"
],
"out": [
"T_RC",
"T_STR3"
]
},
{
"mod": "mg",
"modnm": "전문게이트웨이",
"svc": "MG_SEND",
"desc": "* MG_SEND.pgc - mg 모듈 서비스 MG_SEND (one service = one file).",
"in": [
"T_CHANNEL",
"T_STR1",
"T_STR3",
"T_BIZDATE",
"T_AMOUNT"
],
"out": [
"T_ARG1",
"T_ID1"
]
},
{
"mod": "mg",
"modnm": "전문게이트웨이",
"svc": "MG_SESSION",
"desc": "* MG_SESSION.pgc - mg 모듈 서비스 MG_SESSION (one service = one file).",
"in": [],
"out": [
"T_ARG2"
]
},
{
"mod": "mg",
"modnm": "전문게이트웨이",
"svc": "MG_SIGNOFF",
"desc": "* MG_SIGNOFF.pgc - mg 모듈 서비스 MG_SIGNOFF (one service = one file).",
"in": [
"T_CHANNEL"
],
"out": [
"T_STATUS"
]
},
{
"mod": "mg",
"modnm": "전문게이트웨이",
"svc": "MG_SIGNON",
"desc": "* MG_SIGNON.pgc - mg 모듈 서비스 MG_SIGNON (one service = one file).",
"in": [
"T_CHANNEL",
"T_KEY1"
],
"out": [
"T_STATUS"
]
},
{
"mod": "mg",
"modnm": "전문게이트웨이",
"svc": "MG_STAN",
"desc": "* MG_STAN.pgc - mg 모듈 서비스 MG_STAN (one service = one file).",
"in": [],
"out": [
"T_ARG1"
]
},
{
"mod": "mg",
"modnm": "전문게이트웨이",
"svc": "MG_STATS",
"desc": "채널 당일 통계: 수신/송신/오류 건수. */",
"in": [
"T_CHANNEL",
"T_BIZDATE"
],
"out": [
"T_ARG1",
"T_ARG2",
"T_ARG3",
"T_GROSS"
]
},
{
"mod": "mg",
"modnm": "전문게이트웨이",
"svc": "MG_STATUS",
"desc": "* MG_STATUS.pgc - mg 모듈 서비스 MG_STATUS (one service = one file).",
"in": [
"T_ID1"
],
"out": [
"T_STATUS"
]
},
{
"mod": "mg",
"modnm": "전문게이트웨이",
"svc": "MG_UNPACK",
"desc": "* MG_UNPACK.pgc - mg 모듈 서비스 MG_UNPACK (one service = one file).",
"in": [
"T_STR3"
],
"out": [
"T_STR1",
"T_STR4",
"T_AMOUNT"
]
},
{
"mod": "mm",
"modnm": "마스터",
"svc": "MM_BIN_INQ",
"desc": "기능: BIN 조회.",
"in": [
"T_KEY1"
],
"out": []
},
{
"mod": "mm",
"modnm": "마스터",
"svc": "MM_BIN_REG",
"desc": "기능: BIN 마스터 등록.",
"in": [
"T_KEY1",
"T_ISSUER",
"T_STR5"
],
"out": []
},
{
"mod": "mm",
"modnm": "마스터",
"svc": "MM_CODE_CACHE",
"desc": "기능: 코드그룹의 활성 코드 수 (캐시 워밍 시뮬).",
"in": [
"T_STR1"
],
"out": [
"T_COUNT"
]
},
{
"mod": "mm",
"modnm": "마스터",
"svc": "MM_CODE_INQ",
"desc": "기능: 공통코드 조회.",
"in": [
"T_STR1",
"T_KEY1"
],
"out": []
},
{
"mod": "mm",
"modnm": "마스터",
"svc": "MM_CODE_REG",
"desc": "기능: 공통코드 등록.",
"in": [
"T_STR1",
"T_KEY1",
"T_STR2"
],
"out": []
},
{
"mod": "mm",
"modnm": "마스터",
"svc": "MM_CONFIRM",
"desc": "기능: 가맹점 승인 확정 (상태 ACTIVE + 이력).",
"in": [
"T_MERCHANT"
],
"out": []
},
{
"mod": "mm",
"modnm": "마스터",
"svc": "MM_FEERATE_HIST",
"desc": "기능: 수수료율 변경 이력 건수 (dbio).",
"in": [
"T_MERCHANT"
],
"out": [
"T_COUNT"
]
},
{
"mod": "mm",
"modnm": "마스터",
"svc": "MM_FEERATE_INQ",
"desc": "기능: 수수료율 조회 (dbio).",
"in": [
"T_MERCHANT",
"T_STR4"
],
"out": [
"T_ARG1"
]
},
{
"mod": "mm",
"modnm": "마스터",
"svc": "MM_FEERATE_SET",
"desc": "기능: 수수료율 설정 (dbio upsert + 이력).",
"in": [
"T_MERCHANT",
"T_STR4",
"T_ARG1"
],
"out": []
},
{
"mod": "mm",
"modnm": "마스터",
"svc": "MM_FX_INQ",
"desc": "기능: 환율 조회 + 금액 환산 (rate_bps는 100 기준 bps).",
"in": [
"T_CCY",
"T_FX_AMT"
],
"out": [
"T_ARG2",
"T_AMOUNT"
]
},
{
"mod": "mm",
"modnm": "마스터",
"svc": "MM_FX_REG",
"desc": "기능: 환율 마스터 upsert.",
"in": [
"T_CCY",
"T_ARG2"
],
"out": []
},
{
"mod": "mm",
"modnm": "마스터",
"svc": "MM_HOLIDAY_REG",
"desc": "기능: 공휴일 마스터 등록.",
"in": [
"T_BIZDATE",
"T_STR1"
],
"out": []
},
{
"mod": "mm",
"modnm": "마스터",
"svc": "MM_ISSUER_INQ",
"desc": "기능: 발급사 조회.",
"in": [
"T_ISSUER"
],
"out": []
},
{
"mod": "mm",
"modnm": "마스터",
"svc": "MM_ISSUER_REG",
"desc": "기능: 발급사 마스터 등록.",
"in": [
"T_ISSUER",
"T_STR1",
"T_STR2"
],
"out": []
},
{
"mod": "mm",
"modnm": "마스터",
"svc": "MM_LIMIT_INQ",
"desc": "기능: 가맹점 한도 조회.",
"in": [
"T_MERCHANT"
],
"out": [
"T_AMT1",
"T_AMT2",
"T_AMT3"
]
},
{
"mod": "mm",
"modnm": "마스터",
"svc": "MM_LIMIT_SET",
"desc": "기능: 가맹점 한도 설정 (upsert).",
"in": [
"T_MERCHANT",
"T_AMT1",
"T_AMT2",
"T_AMT3"
],
"out": []
},
{
"mod": "mm",
"modnm": "마스터",
"svc": "MM_MCC_REG",
"desc": "기능: MCC 업종 마스터 등록.",
"in": [
"T_STR6",
"T_STR1",
"T_ARG1"
],
"out": []
},
{
"mod": "mm",
"modnm": "마스터",
"svc": "MM_MERCH_ACCT",
"desc": "기능: 정산계좌 변경 (직접 UPDATE + 이력).",
"in": [
"T_MERCHANT",
"T_STR3"
],
"out": []
},
{
"mod": "mm",
"modnm": "마스터",
"svc": "MM_MERCH_BULK",
"desc": "기능: 가맹점 대량 등록 (T_COUNT개 파생 생성).",
"in": [
"T_MERCHANT",
"T_STR2",
"T_COUNT"
],
"out": [
"T_COUNT"
]
},
{
"mod": "mm",
"modnm": "마스터",
"svc": "MM_MERCH_DEL",
"desc": "기능: 가맹점 논리 삭제 (상태 DELETED + 이력).",
"in": [
"T_MERCHANT"
],
"out": []
},
{
"mod": "mm",
"modnm": "마스터",
"svc": "MM_MERCH_GRADE",
"desc": "기능: 가맹점 등급 변경 (dbio + 이력).",
"in": [
"T_MERCHANT",
"T_STR2"
],
"out": []
},
{
"mod": "mm",
"modnm": "마스터",
"svc": "MM_MERCH_INQ",
"desc": "기능: 가맹점 마스터 조회 (dbio).",
"in": [
"T_MERCHANT"
],
"out": []
},
{
"mod": "mm",
"modnm": "마스터",
"svc": "MM_MERCH_REG",
"desc": "기능: 가맹점 확장 마스터 등록 (dbio upsert + 이력).",
"in": [
"T_MERCHANT",
"T_STR1",
"T_STR2",
"T_STR3"
],
"out": []
},
{
"mod": "mm",
"modnm": "마스터",
"svc": "MM_MERCH_STATUS",
"desc": "기능: 가맹점 상태 변경 (dbio + 이력).",
"in": [
"T_MERCHANT",
"T_STATUS"
],
"out": []
},
{
"mod": "mm",
"modnm": "마스터",
"svc": "MM_MERCH_SUM",
"desc": "기능: 상태별 가맹점 수 집계 (ACTIVE 기준).",
"in": [
"T_STATUS"
],
"out": [
"T_COUNT"
]
},
{
"mod": "mm",
"modnm": "마스터",
"svc": "MM_MERCH_UPD",
"desc": "기능: 가맹점명/계좌 수정 (직접 UPDATE + 이력).",
"in": [
"T_MERCHANT",
"T_STR1",
"T_STR3"
],
"out": []
},
{
"mod": "mm",
"modnm": "마스터",
"svc": "MM_STATUS",
"desc": "기능: 서비스 상태 (전체 가맹점 수, RC=0).",
"in": [],
"out": [
"T_COUNT",
"T_RC"
]
},
{
"mod": "mm",
"modnm": "마스터",
"svc": "MM_TERMINAL_INQ",
"desc": "기능: 단말 조회.",
"in": [
"T_STR5"
],
"out": []
},
{
"mod": "mm",
"modnm": "마스터",
"svc": "MM_TERMINAL_REG",
"desc": "기능: 단말 마스터 등록.",
"in": [
"T_STR5",
"T_MERCHANT",
"T_STR6"
],
"out": []
},
{
"mod": "mm",
"modnm": "마스터",
"svc": "MM_VALIDATE",
"desc": "기능: 가맹점 마스터 정합성 검사 (존재+수수료율 존재).",
"in": [
"T_MERCHANT"
],
"out": [
"T_RC"
]
},
{
"mod": "py",
"modnm": "지급",
"svc": "PAY_ACCTCHK",
"desc": "지급계좌 유효성 점검: dbio 로 계좌 상태/잔액을 읽어 ACTIVE 여부를 회신.",
"in": [
"T_KEY1"
],
"out": [
"T_RC",
"T_AMT1"
]
},
{
"mod": "py",
"modnm": "지급",
"svc": "PAY_ADJUST",
"desc": "지급 조정: py_adjust 에 증감(delta)을 기록하고 지급건 net 에 즉시 반영.",
"in": [
"T_ID1",
"T_DELTA",
"T_BIZDATE",
"T_REASON"
],
"out": [
"T_ADJ"
]
},
{
"mod": "py",
"modnm": "지급",
"svc": "PAY_ADVANCE",
"desc": "선지급(advance): 선지급 수수료(1%)를 공제한 지급건(ADVANCE 채널)을 생성.",
"in": [
"T_MERCHANT",
"T_KEY1",
"T_AMOUNT",
"T_BIZDATE"
],
"out": [
"T_ID1",
"T_FEE",
"T_NET"
]
},
{
"mod": "py",
"modnm": "지급",
"svc": "PAY_APPROVE",
"desc": "지급 승인: 금액을 먼저 조회한 뒤 요청(R) 상태만 승인(A)으로 전이하고 금액을",
"in": [
"T_ID1"
],
"out": [
"T_AMOUNT",
"T_RC"
]
},
{
"mod": "py",
"modnm": "지급",
"svc": "PAY_BULK",
"desc": "대량 지급 생성: 동일 금액의 지급건(BULK 채널)을 N건 반복 등록.",
"in": [
"T_MERCHANT",
"T_KEY1",
"T_AMOUNT",
"T_COUNT",
"T_BIZDATE"
],
"out": [
"T_COUNT"
]
},
{
"mod": "py",
"modnm": "지급",
"svc": "PAY_CANCEL",
"desc": "지급 취소: 취소 조정(-amount)을 py_adjust 에 기록하고 지급건 상태 C 로 전이.",
"in": [
"T_ID1",
"T_AMOUNT",
"T_BIZDATE",
"T_REASON"
],
"out": [
"T_ADJ"
]
},
{
"mod": "py",
"modnm": "지급",
"svc": "PAY_CLOSE",
"desc": "일마감: 당일 지급완료(P)건을 마감(X)으로 일괄 전환하고 전환 건수를 회신.",
"in": [
"T_BIZDATE"
],
"out": [
"T_COUNT"
]
},
{
"mod": "py",
"modnm": "지급",
"svc": "PAY_CONFIRM",
"desc": "지급 확정(confirm): 지급 파일 상태를 확정(C)으로 전이하고 확정 시각 기록.",
"in": [
"T_ID2"
],
"out": []
},
{
"mod": "py",
"modnm": "지급",
"svc": "PAY_FEEDED",
"desc": "수수료 공제(fee deduction): bps 로 수수료를 산출해 fee/net 을 재계산·갱신.",
"in": [
"T_ID1",
"T_AMOUNT",
"T_ARG1"
],
"out": [
"T_FEE",
"T_NET"
]
},
{
"mod": "py",
"modnm": "지급",
"svc": "PAY_FILEGEN",
"desc": "지급 파일 헤더 생성: 당일 승인(A) 지급건 집계 -> py_file.",
"in": [
"T_BIZDATE"
],
"out": [
"T_ID2",
"T_COUNT",
"T_GROSS"
]
},
{
"mod": "py",
"modnm": "지급",
"svc": "PAY_HISTORY",
"desc": "가맹점 지급 이력 건수: 해당 가맹점의 전체 지급건 수를 집계해 회신.",
"in": [
"T_MERCHANT"
],
"out": [
"T_COUNT"
]
},
{
"mod": "py",
"modnm": "지급",
"svc": "PAY_HOLD",
"desc": "지급 보류: 이미 지급완료(P)/마감(X)된 건은 보류 불가 - dbio 로 현재 상태를",
"in": [
"T_ID1"
],
"out": [
"T_RC"
]
},
{
"mod": "py",
"modnm": "지급",
"svc": "PAY_INQUIRY",
"desc": "지급 단건 상세 조회: 가맹점/계좌/금액/수수료/순액/상태를 한 번에 회신.",
"in": [
"T_ID1"
],
"out": [
"T_AMOUNT",
"T_FEE",
"T_NET"
]
},
{
"mod": "py",
"modnm": "지급",
"svc": "PAY_INT",
"desc": "선지급 이자 계산: 일할(days) * bps 로 이자와 차감 후 순액을 산출(순수 계산).",
"in": [
"T_AMOUNT",
"T_ARG1",
"T_ARG2"
],
"out": [
"T_AMT1",
"T_NET"
]
},
{
"mod": "py",
"modnm": "지급",
"svc": "PAY_MERCHSUM",
"desc": "가맹점 당일 지급 집계: py_payout 집계 후 dbio 로 py_summary upsert.",
"in": [
"T_MERCHANT",
"T_BIZDATE"
],
"out": [
"T_COUNT",
"T_GROSS"
]
},
{
"mod": "py",
"modnm": "지급",
"svc": "PAY_NETOFF",
"desc": "상계(net-off): 지급건의 net 을 조회해 차감액을 반영하고 갱신.",
"in": [
"T_ID1",
"T_AMOUNT"
],
"out": [
"T_NET"
]
},
{
"mod": "py",
"modnm": "지급",
"svc": "PAY_RECON",
"desc": "지급-파일 대사: 특정 file_id 에 편성된 지급 건수/합계를 확인.",
"in": [
"T_ID2"
],
"out": [
"T_COUNT",
"T_GROSS"
]
},
{
"mod": "py",
"modnm": "지급",
"svc": "PAY_REJECT",
"desc": "지급 반려: 상태를 반려(J)로 전이하고 반려 사유를 reject_reason 에 기록.",
"in": [
"T_ID1",
"T_REASON"
],
"out": []
},
{
"mod": "py",
"modnm": "지급",
"svc": "PAY_RELEASE",
"desc": "보류 해제: 직전 상태를 조회하여 보류(H)가 아니면 무효 처리, 보류면 dbio 로",
"in": [
"T_ID1"
],
"out": [
"T_RC"
]
},
{
"mod": "py",
"modnm": "지급",
"svc": "PAY_REMIT",
"desc": "실지급 송금: 계좌 잔액을 확인해 부족하면 거절, 충분하면 차감 후 상태 P.",
"in": [
"T_ID1",
"T_NET",
"T_KEY1"
],
"out": [
"T_RC"
]
},
{
"mod": "py",
"modnm": "지급",
"svc": "PAY_REPROC",
"desc": "재처리: 직전 상태를 조회한 뒤 실패/보류/취소(J,H,C) -> 요청(R) 전이, 이전 상태 회신.",
"in": [
"T_ID1"
],
"out": [
"T_RC"
]
},
{
"mod": "py",
"modnm": "지급",
"svc": "PAY_RESULT",
"desc": "지급 결과 반영: 편성/요청(F,R) 상태만 지급완료(P)로 전이, 반영 건수를 T_RC 로.",
"in": [
"T_ID1"
],
"out": [
"T_RC"
]
},
{
"mod": "py",
"modnm": "지급",
"svc": "PAY_RETRY",
"desc": "실패 지급 재시도: 실패/보류(J,H) 건만 요청(R)으로 되돌리고 retry_count 증가.",
"in": [
"T_ID1"
],
"out": [
"T_RC"
]
},
{
"mod": "py",
"modnm": "지급",
"svc": "PAY_REVERSE",
"desc": "지급 역분개(reverse): 상태 V(역분개)로 전이하고 계좌 잔액을 원복.",
"in": [
"T_ID1",
"T_AMOUNT",
"T_KEY1"
],
"out": []
},
{
"mod": "py",
"modnm": "지급",
"svc": "PAY_SCHEDULE",
"desc": "지급 예약 등록: 지정 실행일로 py_schedule 예약(S) 레코드를 생성.",
"in": [
"T_ID1",
"T_BIZDATE"
],
"out": [
"T_ID2"
]
},
{
"mod": "py",
"modnm": "지급",
"svc": "PAY_SPLIT",
"desc": "지급 분할: 금액을 N건으로 나눠 각각의 지급건(SPLIT 채널)으로 생성.",
"in": [
"T_MERCHANT",
"T_KEY1",
"T_AMOUNT",
"T_COUNT",
"T_BIZDATE"
],
"out": [
"T_COUNT"
]
},
{
"mod": "py",
"modnm": "지급",
"svc": "PAY_STATEMENT",
"desc": "가맹점 지급 명세: 당일 지급완료(P) 건의 건수/금액/수수료/순액을 집계.",
"in": [
"T_MERCHANT",
"T_BIZDATE"
],
"out": [
"T_COUNT",
"T_GROSS",
"T_FEE",
"T_NET"
]
},
{
"mod": "py",
"modnm": "지급",
"svc": "PAY_STATUS",
"desc": "지급 상태 조회: dbio 로 단건 상태를 읽어 회신.",
"in": [
"T_ID1"
],
"out": []
},
{
"mod": "py",
"modnm": "지급",
"svc": "PAY_SUMMARY",
"desc": "가맹점 일별 지급 집계 조회: py_summary 에서 건수/금액을 읽어 회신(무행 시 0).",
"in": [
"T_MERCHANT",
"T_BIZDATE"
],
"out": [
"T_COUNT",
"T_GROSS"
]
},
{
"mod": "py",
"modnm": "지급",
"svc": "PAY_XFERLINK",
"desc": "이체 연계: 지급건에 대한 XFER 원장 엔트리를 py_ledger 에 기록.",
"in": [
"T_ID1",
"T_AMOUNT",
"T_BIZDATE"
],
"out": []
},
{
"mod": "rc",
"modnm": "대사",
"svc": "RC_3WAY",
"desc": "3-way 대사: 승인+매입+원장 모두 존재 시 MATCHED. */",
"in": [
"T_PURCHASE_ID",
"T_NET",
"T_BIZDATE"
],
"out": [
"T_RC"
]
},
{
"mod": "rc",
"modnm": "대사",
"svc": "RC_ACQ_DEP",
"desc": "매입-입금(원장) 대사: 원장 합계와 net 비교. */",
"in": [
"T_PURCHASE_ID",
"T_NET",
"T_BIZDATE"
],
"out": [
"T_GROSS",
"T_RC"
]
},
{
"mod": "rc",
"modnm": "대사",
"svc": "RC_ALERT",
"desc": "* RC_ALERT.pgc - rc 모듈 서비스 RC_ALERT (one service = one file).",
"in": [
"T_PURCHASE_ID",
"T_BIZDATE",
"T_MSG",
"T_STR1"
],
"out": [
"T_ID1"
]
},
{
"mod": "rc",
"modnm": "대사",
"svc": "RC_AMTDIFF",
"desc": "금액 차이 대사: 기대(net) vs 실제(원장합) 차이 기록. */",
"in": [
"T_PURCHASE_ID",
"T_NET",
"T_BIZDATE"
],
"out": [
"T_DELTA"
]
},
{
"mod": "rc",
"modnm": "대사",
"svc": "RC_APPR_ACQ",
"desc": "* RC_APPR_ACQ.pgc - rc 모듈 서비스 RC_APPR_ACQ (one service = one file).",
"in": [
"T_PURCHASE_ID",
"T_NET",
"T_BIZDATE"
],
"out": [
"T_ID1",
"T_RC"
]
},
{
"mod": "rc",
"modnm": "대사",
"svc": "RC_AUTOFIX",
"desc": "자동 보정: 예외 해소 + 보정 원장. */",
"in": [
"T_PURCHASE_ID",
"T_AMOUNT",
"T_BIZDATE"
],
"out": []
},
{
"mod": "rc",
"modnm": "대사",
"svc": "RC_BYDATE",
"desc": "* RC_BYDATE.pgc - rc 모듈 서비스 RC_BYDATE (one service = one file).",
"in": [
"T_BIZDATE"
],
"out": [
"T_COUNT",
"T_GROSS"
]
},
{
"mod": "rc",
"modnm": "대사",
"svc": "RC_BYISSUER",
"desc": "* RC_BYISSUER.pgc - rc 모듈 서비스 RC_BYISSUER (one service = one file).",
"in": [
"T_BIZDATE",
"T_ISSUER"
],
"out": [
"T_COUNT"
]
},
{
"mod": "rc",
"modnm": "대사",
"svc": "RC_BYMERCH",
"desc": "* RC_BYMERCH.pgc - rc 모듈 서비스 RC_BYMERCH (one service = one file).",
"in": [
"T_BIZDATE",
"T_MERCHANT"
],
"out": [
"T_GROSS"
]
},
{
"mod": "rc",
"modnm": "대사",
"svc": "RC_CNTDIFF",
"desc": "건수 차이 대사: 매입 건수 vs 대사 로그 건수. */",
"in": [
"T_BIZDATE"
],
"out": [
"T_COUNT"
]
},
{
"mod": "rc",
"modnm": "대사",
"svc": "RC_CONFIRM",
"desc": "* RC_CONFIRM.pgc - rc 모듈 서비스 RC_CONFIRM (one service = one file).",
"in": [
"T_PURCHASE_ID"
],
"out": []
},
{
"mod": "rc",
"modnm": "대사",
"svc": "RC_DELAY",
"desc": "* RC_DELAY.pgc - rc 모듈 서비스 RC_DELAY (one service = one file).",
"in": [
"T_PURCHASE_ID",
"T_NET",
"T_BIZDATE"
],
"out": [
"T_ID1"
]
},
{
"mod": "rc",
"modnm": "대사",
"svc": "RC_DIFFRPT",
"desc": "* RC_DIFFRPT.pgc - rc 모듈 서비스 RC_DIFFRPT (one service = one file).",
"in": [
"T_BIZDATE"
],
"out": [
"T_COUNT",
"T_DELTA"
]
},
{
"mod": "rc",
"modnm": "대사",
"svc": "RC_EXCEPTION",
"desc": "* RC_EXCEPTION.pgc - rc 모듈 서비스 RC_EXCEPTION (one service = one file).",
"in": [
"T_PURCHASE_ID",
"T_BIZDATE",
"T_REASON"
],
"out": [
"T_ID1"
]
},
{
"mod": "rc",
"modnm": "대사",
"svc": "RC_HOLD",
"desc": "* RC_HOLD.pgc - rc 모듈 서비스 RC_HOLD (one service = one file).",
"in": [
"T_PURCHASE_ID",
"T_NET",
"T_BIZDATE"
],
"out": []
},
{
"mod": "rc",
"modnm": "대사",
"svc": "RC_LEDGERLINK",
"desc": "* RC_LEDGERLINK.pgc - rc 모듈 서비스 RC_LEDGERLINK (one service = one file).",
"in": [
"T_PURCHASE_ID",
"T_NET",
"T_BIZDATE"
],
"out": []
},
{
"mod": "rc",
"modnm": "대사",
"svc": "RC_MANUAL",
"desc": "* RC_MANUAL.pgc - rc 모듈 서비스 RC_MANUAL (one service = one file).",
"in": [
"T_PURCHASE_ID",
"T_NET",
"T_BIZDATE"
],
"out": [
"T_ID1"
]
},
{
"mod": "rc",
"modnm": "대사",
"svc": "RC_PARTIAL",
"desc": "* RC_PARTIAL.pgc - rc 모듈 서비스 RC_PARTIAL (one service = one file).",
"in": [
"T_PURCHASE_ID",
"T_AMOUNT",
"T_BIZDATE"
],
"out": [
"T_ID1"
]
},
{
"mod": "rc",
"modnm": "대사",
"svc": "RC_PROGRESS",
"desc": "* RC_PROGRESS.pgc - rc 모듈 서비스 RC_PROGRESS (one service = one file).",
"in": [
"T_BIZDATE"
],
"out": [
"T_RC"
]
},
{
"mod": "rc",
"modnm": "대사",
"svc": "RC_RELEASE",
"desc": "* RC_RELEASE.pgc - rc 모듈 서비스 RC_RELEASE (one service = one file).",
"in": [
"T_PURCHASE_ID"
],
"out": []
},
{
"mod": "rc",
"modnm": "대사",
"svc": "RC_REMATCH",
"desc": "* RC_REMATCH.pgc - rc 모듈 서비스 RC_REMATCH (one service = one file).",
"in": [
"T_PURCHASE_ID",
"T_NET",
"T_BIZDATE"
],
"out": []
},
{
"mod": "rc",
"modnm": "대사",
"svc": "RC_REPROC",
"desc": "재처리: EXCEPTION 대사 로그를 MATCHED 로 되돌림. */",
"in": [
"T_PURCHASE_ID"
],
"out": []
},
{
"mod": "rc",
"modnm": "대사",
"svc": "RC_RETURN",
"desc": "반품 대사: 반품 원장 + 음수 대사 로그. */",
"in": [
"T_PURCHASE_ID",
"T_AMOUNT",
"T_BIZDATE"
],
"out": [
"T_ID1"
]
},
{
"mod": "rc",
"modnm": "대사",
"svc": "RC_ROLLBACK",
"desc": "* RC_ROLLBACK.pgc - rc 모듈 서비스 RC_ROLLBACK (one service = one file).",
"in": [
"T_PURCHASE_ID"
],
"out": []
},
{
"mod": "rc",
"modnm": "대사",
"svc": "RC_STATS",
"desc": "* RC_STATS.pgc - rc 모듈 서비스 RC_STATS (one service = one file).",
"in": [
"T_BIZDATE"
],
"out": [
"T_COUNT",
"T_RC"
]
},
{
"mod": "rc",
"modnm": "대사",
"svc": "RC_STATUS",
"desc": "* RC_STATUS.pgc - rc 모듈 서비스 RC_STATUS (one service = one file).",
"in": [
"T_PURCHASE_ID"
],
"out": []
},
{
"mod": "rc",
"modnm": "대사",
"svc": "RC_SUMMARY",
"desc": "* RC_SUMMARY.pgc - rc 모듈 서비스 RC_SUMMARY (one service = one file).",
"in": [
"T_BIZDATE"
],
"out": [
"T_COUNT",
"T_GROSS"
]
},
{
"mod": "rc",
"modnm": "대사",
"svc": "RC_TOLERANCE",
"desc": "허용오차 대사: |차이| <= 허용치면 MATCHED. */",
"in": [
"T_PURCHASE_ID",
"T_DELTA",
"T_ARG1",
"T_BIZDATE"
],
"out": [
"T_RC"
]
},
{
"mod": "rc",
"modnm": "대사",
"svc": "RC_UNMATCH",
"desc": "* RC_UNMATCH.pgc - rc 모듈 서비스 RC_UNMATCH (one service = one file).",
"in": [
"T_BIZDATE"
],
"out": []
},
{
"mod": "rc",
"modnm": "대사",
"svc": "RECONCILE",
"desc": "* RECONCILE.pgc - rc 모듈 서비스 RECONCILE (one service = one file).",
"in": [
"T_PURCHASE_ID",
"T_NET",
"T_BIZDATE"
],
"out": []
},
{
"mod": "st",
"modnm": "정산/수수료",
"svc": "SETTLE",
"desc": "* SETTLE.pgc - st 모듈 서비스 SETTLE (one service = one file).",
"in": [
"T_PURCHASE_ID",
"T_NET",
"T_MERCHANT",
"T_BIZDATE"
],
"out": [
"T_SETTLE_ID"
]
},
{
"mod": "st",
"modnm": "정산/수수료",
"svc": "ST_ADJUST",
"desc": "* ST_ADJUST.pgc - st 모듈 서비스 ST_ADJUST (one service = one file).",
"in": [
"T_SETTLE_ID",
"T_PURCHASE_ID",
"T_DELTA",
"T_BIZDATE",
"T_REASON"
],
"out": [
"T_ADJ"
]
},
{
"mod": "st",
"modnm": "정산/수수료",
"svc": "ST_ADVANCE",
"desc": "선지급 예약: 지급 레코드(SCHEDULED) 생성 (dbio). */",
"in": [
"T_NET",
"T_MERCHANT",
"T_BIZDATE",
"T_KEY1"
],
"out": [
"T_ID1"
]
},
{
"mod": "st",
"modnm": "정산/수수료",
"svc": "ST_BANDRATE",
"desc": "* ST_BANDRATE.pgc - st 모듈 서비스 ST_BANDRATE (one service = one file).",
"in": [
"T_AMOUNT",
"T_STR1"
],
"out": [
"T_RC"
]
},
{
"mod": "st",
"modnm": "정산/수수료",
"svc": "ST_BYMERCH",
"desc": "* ST_BYMERCH.pgc - st 모듈 서비스 ST_BYMERCH (one service = one file).",
"in": [
"T_MERCHANT",
"T_BIZDATE"
],
"out": [
"T_COUNT",
"T_GROSS"
]
},
{
"mod": "st",
"modnm": "정산/수수료",
"svc": "ST_CANCEL",
"desc": "정산 취소: 상태 CANCELLED + 취소 조정 (dbio). */",
"in": [
"T_PURCHASE_ID",
"T_BIZDATE"
],
"out": []
},
{
"mod": "st",
"modnm": "정산/수수료",
"svc": "ST_CAP",
"desc": "수수료 상한 적용: 상한 초과분을 감액 조정 (dbio). */",
"in": [
"T_SETTLE_ID",
"T_PURCHASE_ID",
"T_FEE",
"T_ARG1",
"T_BIZDATE"
],
"out": [
"T_FEE",
"T_DELTA"
]
},
{
"mod": "st",
"modnm": "정산/수수료",
"svc": "ST_CONFIRM",
"desc": "* ST_CONFIRM.pgc - st 모듈 서비스 ST_CONFIRM (one service = one file).",
"in": [
"T_PURCHASE_ID"
],
"out": []
},
{
"mod": "st",
"modnm": "정산/수수료",
"svc": "ST_DELAYINT",
"desc": "* ST_DELAYINT.pgc - st 모듈 서비스 ST_DELAYINT (one service = one file).",
"in": [
"T_SETTLE_ID",
"T_PURCHASE_ID",
"T_NET",
"T_ARG1",
"T_ARG2",
"T_MERCHANT",
"T_BIZDATE"
],
"out": [
"T_AMOUNT"
]
},
{
"mod": "st",
"modnm": "정산/수수료",
"svc": "ST_DIFFCHK",
"desc": "* ST_DIFFCHK.pgc - st 모듈 서비스 ST_DIFFCHK (one service = one file).",
"in": [
"T_PURCHASE_ID"
],
"out": [
"T_DELTA",
"T_RC"
]
},
{
"mod": "st",
"modnm": "정산/수수료",
"svc": "ST_FXCONV",
"desc": "외화 환산: fx * rate/100 = KRW. */",
"in": [
"T_FX_AMT",
"T_ARG1"
],
"out": [
"T_AMOUNT"
]
},
{
"mod": "st",
"modnm": "정산/수수료",
"svc": "ST_HOLD",
"desc": "* ST_HOLD.pgc - st 모듈 서비스 ST_HOLD (one service = one file).",
"in": [
"T_MERCHANT",
"T_BIZDATE"
],
"out": []
},
{
"mod": "st",
"modnm": "정산/수수료",
"svc": "ST_LEDGERLINK",
"desc": "* ST_LEDGERLINK.pgc - st 모듈 서비스 ST_LEDGERLINK (one service = one file).",
"in": [
"T_PURCHASE_ID",
"T_NET",
"T_BIZDATE"
],
"out": []
},
{
"mod": "st",
"modnm": "정산/수수료",
"svc": "ST_MDR",
"desc": "* ST_MDR.pgc - st 모듈 서비스 ST_MDR (one service = one file).",
"in": [
"T_PURCHASE_ID",
"T_FEE",
"T_BIZDATE"
],
"out": []
},
{
"mod": "st",
"modnm": "정산/수수료",
"svc": "ST_MONTHLY",
"desc": "* ST_MONTHLY.pgc - st 모듈 서비스 ST_MONTHLY (one service = one file).",
"in": [
"T_MERCHANT",
"T_KEY1"
],
"out": [
"T_GROSS"
]
},
{
"mod": "st",
"modnm": "정산/수수료",
"svc": "ST_NETTING",
"desc": "* ST_NETTING.pgc - st 모듈 서비스 ST_NETTING (one service = one file).",
"in": [
"T_MERCHANT",
"T_BIZDATE"
],
"out": [
"T_GROSS"
]
},
{
"mod": "st",
"modnm": "정산/수수료",
"svc": "ST_OFFSET",
"desc": "상계: 음수 조정으로 채권 상계 기록 (dbio). */",
"in": [
"T_SETTLE_ID",
"T_PURCHASE_ID",
"T_AMOUNT",
"T_BIZDATE"
],
"out": [
"T_ADJ"
]
},
{
"mod": "st",
"modnm": "정산/수수료",
"svc": "ST_PAYDATE",
"desc": "* ST_PAYDATE.pgc - st 모듈 서비스 ST_PAYDATE (one service = one file).",
"in": [
"T_MERCHANT",
"T_BIZDATE"
],
"out": []
},
{
"mod": "st",
"modnm": "정산/수수료",
"svc": "ST_RATEAPPLY",
"desc": "* ST_RATEAPPLY.pgc - st 모듈 서비스 ST_RATEAPPLY (one service = one file).",
"in": [
"T_SETTLE_ID",
"T_PURCHASE_ID",
"T_AMOUNT",
"T_MERCHANT",
"T_BIZDATE",
"T_STR1"
],
"out": [
"T_FEE",
"T_RC"
]
},
{
"mod": "st",
"modnm": "정산/수수료",
"svc": "ST_RECALC",
"desc": "* ST_RECALC.pgc - st 모듈 서비스 ST_RECALC (one service = one file).",
"in": [
"T_PURCHASE_ID"
],
"out": [
"T_NET"
]
},
{
"mod": "st",
"modnm": "정산/수수료",
"svc": "ST_RELAYFEE",
"desc": "중계 수수료: 구간요율 조회 후 정산 상세 기록 (dbio). */",
"in": [
"T_SETTLE_ID",
"T_PURCHASE_ID",
"T_AMOUNT",
"T_MERCHANT",
"T_BIZDATE"
],
"out": [
"T_FEE"
]
},
{
"mod": "st",
"modnm": "정산/수수료",
"svc": "ST_RELEASE",
"desc": "* ST_RELEASE.pgc - st 모듈 서비스 ST_RELEASE (one service = one file).",
"in": [
"T_MERCHANT",
"T_BIZDATE"
],
"out": []
},
{
"mod": "st",
"modnm": "정산/수수료",
"svc": "ST_REPORT",
"desc": "* ST_REPORT.pgc - st 모듈 서비스 ST_REPORT (one service = one file).",
"in": [
"T_BIZDATE"
],
"out": [
"T_COUNT",
"T_GROSS"
]
},
{
"mod": "st",
"modnm": "정산/수수료",
"svc": "ST_SPLIT",
"desc": "분할 지급: net 을 n 회로 나눠 지급 레코드 생성 (dbio 루프). */",
"in": [
"T_NET",
"T_INSTALL_N",
"T_MERCHANT",
"T_BIZDATE"
],
"out": [
"T_COUNT"
]
},
{
"mod": "st",
"modnm": "정산/수수료",
"svc": "ST_STATS",
"desc": "* ST_STATS.pgc - st 모듈 서비스 ST_STATS (one service = one file).",
"in": [
"T_BIZDATE"
],
"out": [
"T_COUNT",
"T_GROSS",
"T_AMT1"
]
},
{
"mod": "st",
"modnm": "정산/수수료",
"svc": "ST_STATUS",
"desc": "* ST_STATUS.pgc - st 모듈 서비스 ST_STATUS (one service = one file).",
"in": [
"T_PURCHASE_ID"
],
"out": []
},
{
"mod": "st",
"modnm": "정산/수수료",
"svc": "ST_VANFEE",
"desc": "VAN 수수료: 구간요율 조회 후 정산 상세 기록 (dbio). */",
"in": [
"T_SETTLE_ID",
"T_PURCHASE_ID",
"T_AMOUNT",
"T_MERCHANT",
"T_BIZDATE"
],
"out": [
"T_FEE"
]
},
{
"mod": "st",
"modnm": "정산/수수료",
"svc": "ST_VAT",
"desc": "* ST_VAT.pgc - st 모듈 서비스 ST_VAT (one service = one file).",
"in": [
"T_PURCHASE_ID",
"T_FEE",
"T_BIZDATE"
],
"out": [
"T_TAX"
]
},
{
"mod": "st",
"modnm": "정산/수수료",
"svc": "ST_WHT",
"desc": "* ST_WHT.pgc - st 모듈 서비스 ST_WHT (one service = one file).",
"in": [
"T_SETTLE_ID",
"T_PURCHASE_ID",
"T_FEE",
"T_MERCHANT",
"T_BIZDATE"
],
"out": [
"T_TAX"
]
},
{
"mod": "st",
"modnm": "정산/수수료",
"svc": "ST_XFERLINK",
"desc": "* ST_XFERLINK.pgc - st 모듈 서비스 ST_XFERLINK (one service = one file).",
"in": [
"T_PURCHASE_ID",
"T_NET",
"T_BIZDATE"
],
"out": []
},
{
"mod": "vl",
"modnm": "정합성검증",
"svc": "VL_AMOUNT",
"desc": "기능: 금액 유효성(0<amt<=규칙 AMT_MAX) 검증 (RC 1=0/음수,2=상한초과).",
"in": [
"T_AMOUNT"
],
"out": [
"T_RC",
"T_ARG1"
]
},
{
"mod": "vl",
"modnm": "정합성검증",
"svc": "VL_ANOMALY",
"desc": "기능: 이상거래 탐지 후 의심거래 적재 (dbio).",
"in": [
"T_PURCHASE_ID",
"T_BIZDATE"
],
"out": [
"T_RC",
"T_ID1"
]
},
{
"mod": "vl",
"modnm": "정합성검증",
"svc": "VL_APPR_ACQ",
"desc": "기능: 승인-매입 매칭 검증 (RC 1=승인 없음).",
"in": [
"T_PURCHASE_ID"
],
"out": [
"T_COUNT",
"T_RC"
]
},
{
"mod": "vl",
"modnm": "정합성검증",
"svc": "VL_BALANCE",
"desc": "기능: 가맹점 순액 대차 검증 (sum(purchase.net) vs sum(settlement.net)).",
"in": [
"T_MERCHANT",
"T_BIZDATE"
],
"out": [
"T_GROSS",
"T_NET",
"T_DELTA",
"T_RC"
]
},
{
"mod": "vl",
"modnm": "정합성검증",
"svc": "VL_BATCH_CHK",
"desc": "기능: 배치 정합(purchase 건수 vs merchant_summary.txn_count).",
"in": [
"T_BIZDATE"
],
"out": [
"T_COUNT",
"T_GROSS",
"T_RC"
]
},
{
"mod": "vl",
"modnm": "정합성검증",
"svc": "VL_BIN",
"desc": "기능: BIN 유효성 검증 vs mm_bin (RC 1=미등록,2=비활성).",
"in": [
"T_KEY1"
],
"out": [
"T_RC"
]
},
{
"mod": "vl",
"modnm": "정합성검증",
"svc": "VL_CARD",
"desc": "기능: 카드번호 Luhn 검증 (RC 1=체크섬 불일치).",
"in": [
"T_STR1"
],
"out": [
"T_RC"
]
},
{
"mod": "vl",
"modnm": "정합성검증",
"svc": "VL_CODEVAL",
"desc": "기능: 공통코드 유효성 검증 vs mm_code (RC 1=미존재).",
"in": [
"T_STR3",
"T_KEY1"
],
"out": [
"T_RC"
]
},
{
"mod": "vl",
"modnm": "정합성검증",
"svc": "VL_CONFIRM",
"desc": "기능: 의심거래 종결 확정 (status CLOSED by suspect_id).",
"in": [
"T_ID1"
],
"out": [
"T_RC"
]
},
{
"mod": "vl",
"modnm": "정합성검증",
"svc": "VL_CROSSCHK",
"desc": "기능: 교차검증(매입+가맹점+승인 동시 존재, RC 비트합).",
"in": [
"T_PURCHASE_ID"
],
"out": [
"T_RC"
]
},
{
"mod": "vl",
"modnm": "정합성검증",
"svc": "VL_DATE",
"desc": "기능: 영업일 유효성(미래일자 금지) 검증 (RC 1=미래).",
"in": [
"T_BIZDATE"
],
"out": [
"T_RC"
]
},
{
"mod": "vl",
"modnm": "정합성검증",
"svc": "VL_DUP",
"desc": "기능: 중복 매입 검증 (동일 가맹점/금액/영업일 2건 이상 → RC 1).",
"in": [
"T_MERCHANT",
"T_BIZDATE",
"T_AMOUNT"
],
"out": [
"T_COUNT",
"T_RC"
]
},
{
"mod": "vl",
"modnm": "정합성검증",
"svc": "VL_DUPAUTH",
"desc": "기능: 중복 승인 검증 (approval 2건 이상 → RC 1).",
"in": [
"T_PURCHASE_ID"
],
"out": [
"T_COUNT",
"T_RC"
]
},
{
"mod": "vl",
"modnm": "정합성검증",
"svc": "VL_EXPIRY",
"desc": "기능: 카드 유효기간(YYYYMM) vs 영업일 검증 (RC 1=만료).",
"in": [
"T_STR2",
"T_BIZDATE"
],
"out": [
"T_RC"
]
},
{
"mod": "vl",
"modnm": "정합성검증",
"svc": "VL_FEE",
"desc": "기능: 수수료 재계산 정합 검증 (저장 fee vs MDR 재계산, RC 1=불일치).",
"in": [
"T_PURCHASE_ID"
],
"out": [
"T_RC",
"T_FEE",
"T_DELTA"
]
},
{
"mod": "vl",
"modnm": "정합성검증",
"svc": "VL_FORMAT",
"desc": "기능: 가맹점ID 형식(길이 4~16) 검증 (RC 1=형식 위반).",
"in": [
"T_MERCHANT"
],
"out": [
"T_COUNT",
"T_RC"
]
},
{
"mod": "vl",
"modnm": "정합성검증",
"svc": "VL_LEDGER",
"desc": "기능: 원장 합계 정합 검증 (sum(ledger) vs purchase.net, RC 1=불일치).",
"in": [
"T_PURCHASE_ID",
"T_BIZDATE"
],
"out": [
"T_RC",
"T_GROSS"
]
},
{
"mod": "vl",
"modnm": "정합성검증",
"svc": "VL_LIMIT",
"desc": "기능: 매입금액 vs 가맹점 일한도 검증 (RC 1=초과).",
"in": [
"T_MERCHANT",
"T_AMOUNT"
],
"out": [
"T_RC"
]
},
{
"mod": "vl",
"modnm": "정합성검증",
"svc": "VL_MERCH",
"desc": "기능: 가맹점 상태 검증 (merchant.status != ACTIVE → RC 1).",
"in": [
"T_MERCHANT"
],
"out": [
"T_RC"
]
},
{
"mod": "vl",
"modnm": "정합성검증",
"svc": "VL_REFINTEG",
"desc": "기능: 참조무결성(purchase.merchant_id ∈ merchant) 검증.",
"in": [
"T_PURCHASE_ID"
],
"out": [
"T_RC"
]
},
{
"mod": "vl",
"modnm": "정합성검증",
"svc": "VL_REPORT",
"desc": "기능: 심각도별 의심거래 건수 리포트.",
"in": [
"T_STR4",
"T_BIZDATE"
],
"out": [
"T_COUNT"
]
},
{
"mod": "vl",
"modnm": "정합성검증",
"svc": "VL_REQUIRED",
"desc": "기능: 필수필드(가맹점/금액) 존재 검증 (RC 비트합).",
"in": [
"T_MERCHANT",
"T_AMOUNT"
],
"out": [
"T_RC"
]
},
{
"mod": "vl",
"modnm": "정합성검증",
"svc": "VL_RULE",
"desc": "기능: 검증 규칙 등록/갱신 (dbio upsert).",
"in": [
"T_STR3",
"T_STR1",
"T_STR4",
"T_ARG1"
],
"out": []
},
{
"mod": "vl",
"modnm": "정합성검증",
"svc": "VL_SALES",
"desc": "기능: 매입 원거래 존재 검증 (RC 1=미존재).",
"in": [
"T_PURCHASE_ID",
"T_BIZDATE"
],
"out": [
"T_RC"
]
},
{
"mod": "vl",
"modnm": "정합성검증",
"svc": "VL_SETTLE",
"desc": "기능: 정산금액 정합 검증 (settlement.net vs purchase.net, RC 1=불일치).",
"in": [
"T_PURCHASE_ID"
],
"out": [
"T_RC",
"T_NET"
]
},
{
"mod": "vl",
"modnm": "정합성검증",
"svc": "VL_STATUS",
"desc": "기능: 서비스 상태 (전체 OPEN 의심거래 수, RC=0).",
"in": [],
"out": [
"T_COUNT",
"T_RC"
]
},
{
"mod": "vl",
"modnm": "정합성검증",
"svc": "VL_STATUS_CHK",
"desc": "기능: 매입 상태 유효값 검증 (허용집합 밖 → RC 1).",
"in": [
"T_PURCHASE_ID"
],
"out": [
"T_RC"
]
},
{
"mod": "vl",
"modnm": "정합성검증",
"svc": "VL_SUMMARY",
"desc": "기능: 당일 미결(OPEN) 의심거래 요약 (dbio).",
"in": [
"T_BIZDATE"
],
"out": [
"T_COUNT",
"T_RC"
]
},
{
"mod": "vl",
"modnm": "정합성검증",
"svc": "VL_THRESHOLD",
"desc": "기능: 규칙 임계치 검사 (dbio get_rule; amount>threshold → RC 1).",
"in": [
"T_STR3",
"T_AMOUNT"
],
"out": [
"T_RC",
"T_ARG1"
]
},
{
"mod": "vl",
"modnm": "정합성검증",
"svc": "VL_TOLERANCE",
"desc": "기능: 금액 허용오차(amount == fee+net ± tol) 검증 (RC 1=초과).",
"in": [
"T_PURCHASE_ID",
"T_ARG1"
],
"out": [
"T_RC",
"T_DELTA"
]
}
];
</script>
<script>
window.onerror = function(m, src, line){
var e=document.getElementById('stmsg');
if(e){ e.textContent='JS 오류: '+m+' ('+(src||'').split('/').pop()+':'+line+')'; e.style.color='#c22'; }
};
/* ───────── 공통: 필드 한글 라벨 / 기본값 ───────── */
const today = new Date().toISOString().slice(0,10).replace(/-/g,'');
document.getElementById('bizdate').textContent = today;
const LBL = {
T_MERCHANT:"가맹점번호", T_AMOUNT:"금액(원)", T_FEE:"수수료", T_NET:"정산액", T_STATUS:"상태",
T_PURCHASE_ID:"매입번호", T_BIZDATE:"영업일자", T_SETTLE_ID:"정산번호", T_MSG:"메시지",
T_CANCEL_ID:"취소번호", T_INSTALL_N:"할부개월", T_TAX:"세액", T_FX_AMT:"외화금액", T_COUNT:"건수",
T_REASON:"사유", T_CATEGORY:"업종분류", T_ISSUER:"발급사", T_CHANNEL:"채널", T_CCY:"통화",
T_ADJ:"조정번호", T_DELTA:"증감액", T_SVCNAME:"서비스명", T_RC:"결과코드", T_GROSS:"총액", T_DOCNO:"문서번호",
T_KEY1:"키1(카드/계좌)", T_KEY2:"키2", T_ID1:"번호1", T_ID2:"번호2",
};
for (let i=1;i<=8;i++){ LBL['T_ARG'+i]='인자'+i; LBL['T_STR'+i]='문자'+i; }
for (let i=1;i<=4;i++){ LBL['T_AMT'+i]='금액'+i; }
const DEF = {
T_MERCHANT:"M0001", T_AMOUNT:"1000000", T_BIZDATE:today, T_PURCHASE_ID:"1", T_SETTLE_ID:"1",
T_CANCEL_ID:"1", T_ADJ:"1", T_ID1:"1", T_ID2:"1", T_INSTALL_N:"3", T_COUNT:"10",
T_CCY:"KRW", T_CHANNEL:"POS", T_ISSUER:"BC", T_CATEGORY:"5411", T_STATUS:"A",
T_KEY1:"4111111111111111", T_STR5:"4111111111111111", T_FEE:"2500", T_DOCNO:"D0001",
T_SVCNAME:"ACQUIRE", T_GROSS:"0", T_DELTA:"0", T_TAX:"0", T_FX_AMT:"0",
};
const dflt = f => DEF[f] !== undefined ? DEF[f] : (/T_(ARG|AMT)/.test(f) ? "0" : "");
/* XA 를 기본으로 켤 화면(갱신성) 판단: 조회성 키워드면 OFF */
const READONLY = /(_INQ|_CHK|STATUS|SUMMARY|STATS|HISTORY|REPORT|_SUM|BALCHK|LUHN|CRC|WEEKDAY|MONTHEND|BIZDAY|CODENAME|VALIDATE|PROGRESS|VERIFY|DIFFCHK|INQUIRY|TRIALBAL)/;
/* ───────── 즐겨찾기(주요 업무) ───────── */
const FAVS = [
{ svc:"ACQUIRE", nm:"매입 접수(정산체인)", note:"글로벌 XA: ACQUIRE→RECONCILE→SETTLE 체인 후 2PC 커밋" },
{ svc:"ACQ_STATUS", nm:"매입 상태조회" },
{ svc:"ACQ_MERCHSUM", nm:"가맹점 매입집계" },
{ svc:"LIMIT_INQ", nm:"한도 조회" },
{ svc:"ST_MDR", nm:"MDR 수수료 산출" },
{ svc:"LG_BALCHK", nm:"원장 잔액검증" },
{ svc:"CL_DAILY", nm:"일마감 처리" },
{ svc:"MM_MERCH_INQ", nm:"가맹점 조회" },
{ svc:"CM_LUHN", nm:"카드번호 검증(Luhn)" },
];
/* ───────── 메뉴 구성: 즐겨찾기 + 11개 모듈 × 30 화면 ───────── */
const byMod = {};
SVC_SCREENS.forEach(s => { (byMod[s.mod] = byMod[s.mod] || []).push(s); });
const bySvc = Object.fromEntries(SVC_SCREENS.map(s => [s.svc, s]));
document.getElementById('scrcnt').textContent = SVC_SCREENS.length;
const menuEl = document.getElementById('menu');
let CUR = null;
function scrCode(s){ const i = byMod[s.mod].indexOf(s); return s.mod.toUpperCase() + String(i+1).padStart(2,'0') + '01'; }
function addGroup(title, items, open) {
const gd = document.createElement('div'); gd.className = 'grp' + (open?' open':'');
gd.innerHTML = `${title}<span class="cnt">${items.length}</span>`;
const wrap = document.createElement('div'); wrap.className = 'itms';
gd.onclick = () => gd.classList.toggle('open');
menuEl.appendChild(gd); menuEl.appendChild(wrap);
items.forEach(({s, nm, note}) => {
const it = document.createElement('div'); it.className = 'itm';
const cd = scrCode(s);
it.innerHTML = `<span class="cd">${cd}</span>${nm || s.svc}`;
it.title = (s.desc || s.svc);
it.dataset.k = (cd + ' ' + s.svc + ' ' + (nm||'') + ' ' + (s.desc||'')).toLowerCase();
it.onclick = (e) => { e.stopPropagation(); openScreen(s, it, nm, note); };
wrap.appendChild(it);
if (s.svc === 'ACQUIRE' && open) setTimeout(()=>openScreen(s, it, nm, note), 0);
});
}
addGroup('★ 주요 업무', FAVS.filter(f=>bySvc[f.svc]).map(f=>({s:bySvc[f.svc], nm:f.nm, note:f.note})), true);
Object.keys(byMod).sort().forEach(m => {
addGroup(`${byMod[m][0].modnm} (${m}) 업무`, byMod[m].map(s=>({s})), false);
});
/* 검색 */
document.getElementById('q').addEventListener('input', e => {
const q = e.target.value.trim().toLowerCase();
document.querySelectorAll('#menu .itms').forEach(w => w.classList.toggle('show', !!q));
document.querySelectorAll('#menu .itm').forEach(it =>
it.style.display = (!q || it.dataset.k.includes(q)) ? (q ? 'block' : '') : 'none');
});
/* ───────── 화면 렌더 ───────── */
const work = document.getElementById('work');
const journal = [];
function openScreen(s, itEl, nm, note) {
CUR = { s, nm: nm || s.svc };
document.querySelectorAll('#menu .itm').forEach(e=>e.classList.remove('on'));
if (itEl) itEl.classList.add('on');
const cd = scrCode(s);
document.getElementById('tabname').textContent = `${nm || s.svc}`;
document.getElementById('scrno').textContent = cd;
const useTx = !READONLY.test(s.svc);
const rows = (s.in.length ? s.in : []).map((f,i) =>
`<tr><th>${LBL[f]||f}<span class="fldcd">${f}</span></th>
<td><input type="text" id="f_${i}" data-fld="${f}" value="${dflt(f)}"></td></tr>`).join('')
|| `<tr><th>입력</th><td style="color:#889">입력 필드 없음 — 즉시 실행</td></tr>`;
const outHint = s.out.length ? s.out.map(f=>LBL[f]||f).join(', ') : '-';
work.innerHTML = `
<div class="panel"><h3>${cd} · ${nm || s.svc} — <span style="font-weight:normal;color:#667">${s.desc || note || ''}</span></h3>
<div class="bd">
<table class="frm">
<tr><th>서비스명</th><td><b>${s.svc}</b> <span class="fldcd">(${s.modnm} 모듈 · ${s.mod}_svr)</span></td></tr>
${rows}
<tr><th>글로벌 XA</th><td><label><input type="checkbox" id="usetx" ${useTx?'checked':''}> tpbegin / tpcommit (2PC)</label></td></tr>
</table>
<div style="margin-top:6px;color:#889">응답 필드: ${outHint}</div>
<div class="btnrow">
<button onclick="resetForm()">초기화</button>
<button class="pri" onclick="execute()">실행 (tpcall)</button>
</div>
</div>
</div>
<div class="panel"><h3>처리 결과 (응답 전문 UBF)</h3>
<div class="bd"><table class="grd" id="resgrid"><tr><th style="width:200px">필드</th><th>값</th></tr>
<tr><td colspan="2" style="color:#999">실행 전</td></tr></table></div>
</div>
<div class="panel"><h3>거래 저널 (금일 호출이력)</h3>
<div class="bd"><table class="grd" id="jgrid">
<tr><th>시각</th><th>화면</th><th>서비스</th><th>XA</th><th>결과</th><th>요약</th></tr></table></div>
</div>`;
renderJournal();
}
function resetForm(){ const on = document.querySelector('#menu .itm.on'); openScreen(CUR.s, on, CUR.nm); }
async function execute() {
const { s } = CUR;
const useTx = document.getElementById('usetx').checked ? 1 : 0;
const p = new URLSearchParams({ svc: s.svc, _tx: useTx });
s.in.forEach((f,i) => {
const v = document.getElementById('f_'+i)?.value;
if (v !== undefined && v !== '') p.append(f, v);
});
setStatus(`tpcall("${s.svc}") 호출 중 ...`);
let j;
try { j = await (await fetch('api/call?' + p.toString())).json(); }
catch (e) { j = { ok:false, error: String(e) }; }
const g = document.getElementById('resgrid');
g.innerHTML = '<tr><th style="width:200px">필드</th><th>값</th></tr>';
if (j.ok) {
const f = j.fields || {};
if (!Object.keys(f).length) g.innerHTML += '<tr><td colspan="2">(응답 필드 없음 — 정상 처리)</td></tr>';
for (const [k,v] of Object.entries(f))
g.innerHTML += `<tr><td>${LBL[k.replace('#','')]||k} <span class="fldcd">${k}</span></td><td class="num">${fmt(k,v)}</td></tr>`;
setStatus(`tpcall("${s.svc}") 정상 처리${useTx?' · XA tpcommit 완료(2PC)':''}`);
} else {
g.innerHTML += `<tr><td>오류</td><td class="err">${j.error||'unknown'}</td></tr>`;
setStatus(`tpcall("${s.svc}") 실패`, true);
}
journal.unshift({ t:new Date().toLocaleTimeString('ko-KR'), cd:scrCode(s), svc:s.svc, tx:useTx?'Y':'N',
ok:j.ok, sum: j.ok ? summarize(j.fields) : (j.error||'').slice(0,70) });
renderJournal();
}
function fmt(k, v){ return /AMOUNT|FEE|NET|GROSS|AMT|TAX|DELTA/.test(k) && /^\-?\d+$/.test(v) ? Number(v).toLocaleString('ko-KR') : v; }
function summarize(f){ if(!f) return ''; return Object.entries(f).slice(0,4).map(([k,v])=>`${k}=${v}`).join(' '); }
function renderJournal(){
const g = document.getElementById('jgrid'); if (!g) return;
g.innerHTML = '<tr><th>시각</th><th>화면</th><th>서비스</th><th>XA</th><th>결과</th><th>요약</th></tr>' +
journal.map(r=>`<tr><td>${r.t}</td><td>${r.cd}</td><td>${r.svc}</td><td>${r.tx}</td>
<td class="${r.ok?'ok':'err'}">${r.ok?'정상':'오류'}</td><td>${r.sum}</td></tr>`).join('');
}
function setStatus(m, err){ const e=document.getElementById('stmsg'); e.textContent=m; e.style.color=err?'#c22':'#345'; }
</script>
</body>
</html>