- 모든 카테고리 구매신청 기능 완성 (PIPE, FITTING, VALVE, FLANGE, GASKET, BOLT, SUPPORT, SPECIAL, UNKNOWN) - 구매신청 완료 항목: 회색 배경, 체크박스 비활성화, '구매신청완료' 배지 표시 - 전체 선택/구매신청 시 이미 구매신청된 항목 자동 제외 - 구매신청 quantity 타입 에러 수정 (문자열 -> 정수 변환) SUPPORT 카테고리 (구 U-BOLT): - U-BOLT -> SUPPORT로 카테고리명 변경 - 클램프, 유볼트, 우레탄블럭슈 분류 개선 - 테이블 헤더: 선택-종류-타입-크기-디스크립션-추가요구-사용자요구-수량 - 크기 정보 main_nom 필드에서 가져오기 (배관 인치) - 엑셀 내보내기 형식 조정 SPECIAL 카테고리: - SPECIAL 키워드 자재 자동 분류 (SPECIFICATION 제외) - 파일 업로드 시 SPECIAL 카테고리 처리 로직 추가 - 도면번호 필드 추가 (drawing_name, line_no) - 타입 필드: 크기/스케줄/재질 제외한 핵심 정보 표시 - 엑셀 DWG_NAME, LINE_NUM 컬럼 파싱 및 저장 FITTING 카테고리: - 테이블 컬럼 너비 조정 (선택 2%, 종류 8.5%, 수량 12%) 구매신청 관리: - 엑셀 재다운로드 형식 개선 (BOM 페이지와 동일한 형식) - 그룹화된 자재 정보 포함하여 저장 및 다운로드
45 lines
1.8 KiB
SQL
45 lines
1.8 KiB
SQL
-- 구매신청 관리 테이블
|
|
|
|
-- 구매신청 그룹 (같이 신청한 항목들의 묶음)
|
|
CREATE TABLE IF NOT EXISTS purchase_requests (
|
|
request_id SERIAL PRIMARY KEY,
|
|
request_no VARCHAR(50) UNIQUE, -- PR-20241014-001 형식
|
|
file_id INTEGER REFERENCES files(id),
|
|
job_no VARCHAR(50) REFERENCES jobs(job_no),
|
|
category VARCHAR(50),
|
|
material_count INTEGER,
|
|
excel_file_path VARCHAR(500), -- 저장된 엑셀 파일 경로
|
|
requested_by INTEGER REFERENCES users(user_id),
|
|
requested_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
status VARCHAR(20) DEFAULT 'requested', -- requested, ordered, received
|
|
notes TEXT
|
|
);
|
|
|
|
-- 구매신청 자재 상세
|
|
CREATE TABLE IF NOT EXISTS purchase_request_items (
|
|
item_id SERIAL PRIMARY KEY,
|
|
request_id INTEGER REFERENCES purchase_requests(request_id) ON DELETE CASCADE,
|
|
material_id INTEGER REFERENCES materials(id),
|
|
quantity INTEGER,
|
|
unit VARCHAR(20),
|
|
user_requirement TEXT,
|
|
is_ordered BOOLEAN DEFAULT FALSE,
|
|
is_received BOOLEAN DEFAULT FALSE,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- 인덱스
|
|
CREATE INDEX IF NOT EXISTS idx_purchase_requests_file_id ON purchase_requests(file_id);
|
|
CREATE INDEX IF NOT EXISTS idx_purchase_requests_job_no ON purchase_requests(job_no);
|
|
CREATE INDEX IF NOT EXISTS idx_purchase_requests_status ON purchase_requests(status);
|
|
CREATE INDEX IF NOT EXISTS idx_purchase_request_items_request_id ON purchase_request_items(request_id);
|
|
CREATE INDEX IF NOT EXISTS idx_purchase_request_items_material_id ON purchase_request_items(material_id);
|
|
|
|
-- 뷰: 구매신청된 자재 ID 목록
|
|
CREATE OR REPLACE VIEW v_requested_material_ids AS
|
|
SELECT DISTINCT material_id
|
|
FROM purchase_request_items;
|
|
|
|
COMMENT ON TABLE purchase_requests IS '구매신청 그룹 관리';
|
|
COMMENT ON TABLE purchase_request_items IS '구매신청 자재 상세';
|