43 lines
2.4 KiB
SQL
43 lines
2.4 KiB
SQL
|
|
-- V125: 환수채권 연체이자 (overdue interest on clawback receivables)
|
||
|
|
-- 미수 환수채권이 이월될 때 연체기간만큼 단리 연체이자를 월별 적립한다.
|
||
|
|
-- 이자율 0(기본값) 이면 적립 없음 — 기존 동작과 동일(안전 폴백).
|
||
|
|
|
||
|
|
-- ============================================================
|
||
|
|
-- 1. clawback_receivable 누적 연체이자 컬럼
|
||
|
|
-- ============================================================
|
||
|
|
|
||
|
|
ALTER TABLE clawback_receivable
|
||
|
|
ADD COLUMN accrued_interest NUMERIC(15,2) NOT NULL DEFAULT 0;
|
||
|
|
|
||
|
|
COMMENT ON COLUMN clawback_receivable.accrued_interest IS '누적 연체이자 (단리, balance 에 포함되어 회수/상계됨)';
|
||
|
|
|
||
|
|
-- ============================================================
|
||
|
|
-- 2. clawback_interest (월별 연체이자 적립 이력 — 멱등 reverse용)
|
||
|
|
-- ============================================================
|
||
|
|
|
||
|
|
CREATE TABLE clawback_interest (
|
||
|
|
interest_id BIGSERIAL PRIMARY KEY,
|
||
|
|
receivable_id BIGINT NOT NULL REFERENCES clawback_receivable(receivable_id),
|
||
|
|
settle_month CHAR(6) NOT NULL,
|
||
|
|
interest_amount NUMERIC(15,2) NOT NULL,
|
||
|
|
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
||
|
|
CONSTRAINT uq_clawback_interest UNIQUE (receivable_id, settle_month)
|
||
|
|
);
|
||
|
|
|
||
|
|
COMMENT ON TABLE clawback_interest IS '환수채권 월별 연체이자 적립 이력';
|
||
|
|
COMMENT ON COLUMN clawback_interest.receivable_id IS '환수채권 ID';
|
||
|
|
COMMENT ON COLUMN clawback_interest.settle_month IS '적립 정산월(YYYYMM)';
|
||
|
|
COMMENT ON COLUMN clawback_interest.interest_amount IS '당월 적립 연체이자(원금잔액 × 월이자율)';
|
||
|
|
|
||
|
|
CREATE INDEX idx_clawback_interest_settle_month ON clawback_interest (settle_month);
|
||
|
|
|
||
|
|
-- ============================================================
|
||
|
|
-- 3. system_config 시드 — 연체이자율 / 거치기간
|
||
|
|
-- 기본값 0 → 적립 없음(기존 동작 보존). 운영정책에 맞게 수정.
|
||
|
|
-- ============================================================
|
||
|
|
|
||
|
|
INSERT INTO system_config (config_key, config_value, config_group, value_type, description) VALUES
|
||
|
|
('CLAWBACK_OVERDUE_INTEREST_RATE', '0', 'COMMISSION', 'NUMBER', '환수채권 연 연체이자율(%) — 0이면 미적립'),
|
||
|
|
('CLAWBACK_INTEREST_GRACE_MONTHS', '0', 'COMMISSION', 'NUMBER', '환수채권 연체이자 거치기간(개월) — 발생 후 N개월 경과부터 적립')
|
||
|
|
ON CONFLICT (config_key) DO NOTHING;
|