Files
wace_plm/database/estimate_template_tables.sql
hjjeong 60356f886c feat: 견적서 작성 기능 추가 (일반 견적서, 장비 견적서)
- 견적서 템플릿 2종 추가 (estimateTemplate1.jsp, estimateTemplate2.jsp)
- 견적서 작성 팝업 기능 구현 (estimateList_new.jsp)
- 견적서 템플릿 컨트롤러 및 서비스 메서드 추가
- 견적서 템플릿용 DB 테이블 스키마 생성 스크립트 추가
- 회사 직인 이미지 추가
- 견적서 양식: A4 인쇄 최적화, 동적 품목 추가/수정, 자동 금액 계산
2025-10-15 15:45:34 +09:00

87 lines
3.3 KiB
SQL

-- 견적서 템플릿 테이블 생성 SQL
-- 1. 견적서 템플릿 메인 테이블
CREATE TABLE IF NOT EXISTS ESTIMATE_TEMPLATE (
OBJID SERIAL PRIMARY KEY,
CONTRACT_OBJID NUMERIC 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), -- 시행일자
-- 비고 필드 (공통)
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 NUMERIC 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;