-- V124: 환수(클로백) 발생 시 기납부 원천세 역분개(환급/조정)
--       gross<0(환수 우위) 월에 원천징수 역분개 레코드를 적재하여
--       분기 원천세신고(withholding_tax_report) 과대신고를 해소한다.
--       settle_master 금액 흐름은 불변 — 본 테이블은 세무신고 보정 전용(부가 레코드).

-- ============================================================
-- 1. withholding_tax_adjustment (원천세 역분개)
-- ============================================================

CREATE TABLE withholding_tax_adjustment (
    adjustment_id  BIGSERIAL     PRIMARY KEY,
    agent_id       BIGINT        NOT NULL,
    settle_month   CHAR(6)       NOT NULL,
    reason         VARCHAR(20)   NOT NULL DEFAULT 'CHARGEBACK',
    base_amount    NUMERIC(15,2) NOT NULL,   -- 역분개 기준액(=상계되지 않은 |gross| 음수분, 양수 저장)
    income_tax_adj NUMERIC(15,2) NOT NULL,   -- 소득세 역분개(환급분, 음수)
    local_tax_adj  NUMERIC(15,2) NOT NULL,   -- 지방소득세 역분개(환급분, 음수)
    created_at     TIMESTAMP     NOT NULL DEFAULT NOW(),
    CONSTRAINT uq_wta UNIQUE (agent_id, settle_month, reason),
    CONSTRAINT chk_wta_reason CHECK (reason IN ('CHARGEBACK')),
    CONSTRAINT chk_wta_base   CHECK (base_amount >= 0)
);

COMMENT ON TABLE  withholding_tax_adjustment IS '환수 원천세 역분개(세무신고 보정 전용)';
COMMENT ON COLUMN withholding_tax_adjustment.agent_id       IS '설계사 ID';
COMMENT ON COLUMN withholding_tax_adjustment.settle_month   IS '역분개 발생 정산월(YYYYMM)';
COMMENT ON COLUMN withholding_tax_adjustment.reason         IS '사유(CHARGEBACK)';
COMMENT ON COLUMN withholding_tax_adjustment.base_amount    IS '역분개 기준액(상계되지 않은 |gross| 음수분)';
COMMENT ON COLUMN withholding_tax_adjustment.income_tax_adj IS '소득세 역분개(환급분, 음수)';
COMMENT ON COLUMN withholding_tax_adjustment.local_tax_adj  IS '지방소득세 역분개(환급분, 음수)';

CREATE INDEX idx_wta_settle_month ON withholding_tax_adjustment (settle_month);
