34 lines
2.2 KiB
SQL
34 lines
2.2 KiB
SQL
|
|
-- V77: 설계사 연말 지급명세서 (사업소득 지급명세서)
|
||
|
|
-- agent_annual_income(V63) 의 연 집계 데이터를 기반으로 설계사별 PDF/Excel 발급 마스터.
|
||
|
|
|
||
|
|
CREATE TABLE year_end_statement (
|
||
|
|
statement_id BIGSERIAL PRIMARY KEY,
|
||
|
|
agent_id BIGINT NOT NULL REFERENCES agent(agent_id),
|
||
|
|
statement_year INTEGER NOT NULL, -- 신고 연도 (예: 2025)
|
||
|
|
statement_type VARCHAR(20) NOT NULL DEFAULT 'INCOME_DEDUCTION',
|
||
|
|
-- INCOME_DEDUCTION=사업소득 지급명세서
|
||
|
|
total_income NUMERIC(18,2) NOT NULL DEFAULT 0, -- agent_annual_income.total_income 캐시
|
||
|
|
total_withheld NUMERIC(18,2) NOT NULL DEFAULT 0, -- agent_annual_income.total_withheld 캐시
|
||
|
|
total_local_tax NUMERIC(18,2) NOT NULL DEFAULT 0,
|
||
|
|
file_path VARCHAR(500), -- 생성된 PDF/Excel 경로
|
||
|
|
file_format VARCHAR(10) NOT NULL DEFAULT 'XLSX', -- XLSX / PDF
|
||
|
|
file_status VARCHAR(15) NOT NULL DEFAULT 'DRAFT', -- DRAFT / GENERATED / SENT
|
||
|
|
generated_at TIMESTAMP,
|
||
|
|
sent_at TIMESTAMP,
|
||
|
|
sent_to VARCHAR(200), -- 발송처(이메일/내부공유 등)
|
||
|
|
created_at TIMESTAMP NOT NULL DEFAULT now(),
|
||
|
|
created_by BIGINT,
|
||
|
|
updated_at TIMESTAMP NOT NULL DEFAULT now(),
|
||
|
|
updated_by BIGINT,
|
||
|
|
UNIQUE (agent_id, statement_year, statement_type),
|
||
|
|
CONSTRAINT chk_yes_format CHECK (file_format IN ('XLSX','PDF')),
|
||
|
|
CONSTRAINT chk_yes_status CHECK (file_status IN ('DRAFT','GENERATED','SENT'))
|
||
|
|
);
|
||
|
|
COMMENT ON TABLE year_end_statement IS '설계사 연말 지급명세서 발급 마스터';
|
||
|
|
COMMENT ON COLUMN year_end_statement.statement_type IS 'INCOME_DEDUCTION=사업소득 지급명세서';
|
||
|
|
COMMENT ON COLUMN year_end_statement.file_status IS 'DRAFT=대기, GENERATED=파일생성, SENT=발송완료';
|
||
|
|
|
||
|
|
CREATE INDEX idx_yes_year ON year_end_statement(statement_year);
|
||
|
|
CREATE INDEX idx_yes_status ON year_end_statement(file_status);
|
||
|
|
CREATE INDEX idx_yes_agent ON year_end_statement(agent_id, statement_year);
|