-- schema.sql - acquire-core 매입/정산 스키마
--
-- ECPG DBIO 코드가 참조하는 테이블 정의. 컴파일에는 필요 없으며,
-- 실행(런타임) 시 PostgreSQL 에 적용한다.

-- 매입 원장 (전문수신 → 접수)
CREATE TABLE IF NOT EXISTS purchase (
    appr_no   VARCHAR(9)   NOT NULL,        -- 승인번호 (PK)
    merch_id  VARCHAR(15)  NOT NULL,        -- 가맹점번호
    card_no   VARCHAR(16)  NOT NULL,        -- 카드번호(마스킹)
    amount    BIGINT       NOT NULL,        -- 거래금액(원)
    txn_date  CHAR(8)      NOT NULL,        -- 거래일자 YYYYMMDD
    status    CHAR(1)      NOT NULL DEFAULT 'R',  -- R:접수 M:대사완료 U:불일치 S:정산완료
    reg_ts    TIMESTAMP    NOT NULL DEFAULT now(),
    upd_ts    TIMESTAMP,
    CONSTRAINT pk_purchase PRIMARY KEY (appr_no)
);

CREATE INDEX IF NOT EXISTS ix_purchase_date_status
    ON purchase (txn_date, status);

-- 승인 원장 (매입 대사 기준)
CREATE TABLE IF NOT EXISTS approval (
    appr_no   VARCHAR(9)   NOT NULL,
    merch_id  VARCHAR(15)  NOT NULL,
    amount    BIGINT       NOT NULL,
    appr_date CHAR(8)      NOT NULL,
    status    CHAR(1)      NOT NULL DEFAULT 'A',  -- A:승인 C:취소
    reg_ts    TIMESTAMP    NOT NULL DEFAULT now(),
    CONSTRAINT pk_approval PRIMARY KEY (appr_no)
);

-- 정산 집계 (가맹점/영업일 단위)
CREATE TABLE IF NOT EXISTS settlement (
    merch_id     VARCHAR(15) NOT NULL,
    biz_date     CHAR(8)     NOT NULL,      -- 정산 영업일 YYYYMMDD
    total_amount BIGINT      NOT NULL DEFAULT 0,
    txn_cnt      INTEGER     NOT NULL DEFAULT 0,
    upd_ts       TIMESTAMP   NOT NULL DEFAULT now(),
    CONSTRAINT pk_settlement PRIMARY KEY (merch_id, biz_date)
);
