-- 견적서 템플릿 테이블 생성 SQL -- 1. 견적서 템플릿 메인 테이블 CREATE TABLE IF NOT EXISTS ESTIMATE_TEMPLATE ( OBJID VARCHAR(50) PRIMARY KEY, CONTRACT_OBJID VARCHAR(50) NOT NULL, -- CONTRACT_MGMT 테이블의 OBJID 참조 TEMPLATE_TYPE VARCHAR(10) NOT NULL, -- '1': 일반 견적서, '2': 장비 견적서 -- 일반 견적서 필드 (Template 1) EXECUTOR VARCHAR(200), -- 시행일자 RECIPIENT VARCHAR(200), -- 수신처 ESTIMATE_NO VARCHAR(100), -- 견적번호 CONTACT_PERSON VARCHAR(100), -- 수신인 GREETING_TEXT TEXT, -- 인사말 -- 장비 견적서 필드 (Template 2) MODEL_NAME VARCHAR(200), -- 설비 Model 품명 MODEL_CODE VARCHAR(100), -- 설비 Model 코드 EXECUTOR_DATE VARCHAR(50), -- 시행일자 NOTES_CONTENT TEXT, -- 비고 내용 (전체) VALIDITY_PERIOD VARCHAR(50), -- 견적 유효기간 -- 비고 필드 (공통) NOTE1 VARCHAR(500), NOTE2 VARCHAR(500), NOTE3 VARCHAR(500), NOTE4 VARCHAR(500), -- 카테고리 정보 (장비 견적서용, JSON 형태로 저장) CATEGORIES_JSON TEXT, -- 시스템 필드 WRITER VARCHAR(50), REGDATE TIMESTAMP DEFAULT NOW(), CHG_USER_ID VARCHAR(50), CHGDATE TIMESTAMP DEFAULT NOW(), CONSTRAINT fk_estimate_contract FOREIGN KEY (CONTRACT_OBJID) REFERENCES CONTRACT_MGMT(OBJID) ON DELETE CASCADE ); -- 인덱스 생성 CREATE INDEX idx_estimate_contract ON ESTIMATE_TEMPLATE(CONTRACT_OBJID); CREATE INDEX idx_estimate_type ON ESTIMATE_TEMPLATE(TEMPLATE_TYPE); -- 코멘트 추가 COMMENT ON TABLE ESTIMATE_TEMPLATE IS '견적서 템플릿 정보'; COMMENT ON COLUMN ESTIMATE_TEMPLATE.CONTRACT_OBJID IS '견적요청 OBJID (CONTRACT_MGMT 참조)'; COMMENT ON COLUMN ESTIMATE_TEMPLATE.TEMPLATE_TYPE IS '템플릿 타입 (1:일반견적서, 2:장비견적서)'; -- 2. 견적서 템플릿 품목 테이블 CREATE TABLE IF NOT EXISTS ESTIMATE_TEMPLATE_ITEM ( OBJID SERIAL PRIMARY KEY, TEMPLATE_OBJID VARCHAR(50) NOT NULL, -- ESTIMATE_TEMPLATE 테이블의 OBJID 참조 SEQ INTEGER NOT NULL, -- 순번 CATEGORY VARCHAR(100), -- 카테고리 (장비 견적서용) DESCRIPTION VARCHAR(500), -- 품명 SPECIFICATION TEXT, -- 규격/사양 QUANTITY VARCHAR(50), -- 수량 UNIT VARCHAR(50), -- 단위 UNIT_PRICE NUMERIC(15,2), -- 단가 AMOUNT NUMERIC(15,2), -- 금액 NOTE VARCHAR(500), -- 비고 REMARK VARCHAR(500), -- 특이사항 CONSTRAINT fk_item_template FOREIGN KEY (TEMPLATE_OBJID) REFERENCES ESTIMATE_TEMPLATE(OBJID) ON DELETE CASCADE ); -- 인덱스 생성 CREATE INDEX idx_item_template ON ESTIMATE_TEMPLATE_ITEM(TEMPLATE_OBJID); CREATE INDEX idx_item_seq ON ESTIMATE_TEMPLATE_ITEM(TEMPLATE_OBJID, SEQ); -- 코멘트 추가 COMMENT ON TABLE ESTIMATE_TEMPLATE_ITEM IS '견적서 템플릿 품목 정보'; COMMENT ON COLUMN ESTIMATE_TEMPLATE_ITEM.TEMPLATE_OBJID IS '견적서 템플릿 OBJID'; COMMENT ON COLUMN ESTIMATE_TEMPLATE_ITEM.SEQ IS '품목 순번'; COMMENT ON COLUMN ESTIMATE_TEMPLATE_ITEM.CATEGORY IS '카테고리 (장비견적서: CNC Machine, UTILITY 등)'; -- 3. CONTRACT_MGMT 테이블에 CATEGORIES_JSON 컬럼 추가 (이미 없는 경우) -- ALTER TABLE ESTIMATE_TEMPLATE ADD COLUMN IF NOT EXISTS CATEGORIES_JSON TEXT; -- 샘플 데이터 조회 쿼리 -- SELECT * FROM ESTIMATE_TEMPLATE WHERE CONTRACT_OBJID = 123; -- SELECT * FROM ESTIMATE_TEMPLATE_ITEM WHERE TEMPLATE_OBJID = 456 ORDER BY SEQ;