po_document 신규
po_doc_idPK bigserial
doc_typevarchar(20)
center_codeFK varchar(20)
delivery_placevarchar(255)
contactvarchar(100)
request_delivery_datedate
total_amountnumeric(15,2)
deposit_amountnumeric(15,2)
supplier_seller_idFK varchar(100)
statusvarchar(20)
original_file_urlvarchar(500)
발주 문서 헤더(선매입/판매분 공용). 헤더 필드=센터·납품처·연락처·배송요청일·TOTAL·입금금액
po_document_item 신규
po_item_idPK bigserial
po_doc_idFK bigint
line_nointeger
hero_product_codeFK varchar(100)
easyadmin_codevarchar(100)
barcodevarchar(100)
dist_codevarchar(100)
tax_typevarchar(20)
expiry_datedate
unit_price_eanumeric(15,2)
unit_price_boxnumeric(15,2)
supply_amountnumeric(15,2)
vat_amountnumeric(15,2)
order_qtyinteger
stock_qtyinteger
발주 품목행 superset. 선매입=NO/원산지/면과세/박스입수/유통기한/공급가액/부가세액/발주량, 판매분=단위/BOX/EA(확인)/재고량/비고
hero_code_mapping READ
hero_product_codePK varchar(100)
typePK varchar(30)
specific_codevarchar(100)
히어로코드↔DC 작업 코드 매핑(type='hub' 356건). 품목행 easyadmin_code 프리필 원천
seller_product READ
hero_product_codePK varchar(100)
seller_idFK varchar(100)
product_nametext
weightvarchar(255)
originvarchar(255)
taxationvarchar(100)
net_pricebigint
net_unit_pricebigint
상품 마스터. 상품명·중량·원산지·과세·넷공급가 프리필 원천
partner READ
seller_idPK varchar(100)
partner_infovarchar(255)
공급사 정보(36건). 안4 공급사 로그인·발송 담당자 연동 대비 참조
center READ
center_codePK varchar(20)
센터 마스터(40건). 발주서 헤더 센터 선택 원천
po_document_item.po_doc_id = po_document.po_doc_id (헤더↔품목)
po_document_item.hero_product_code = seller_product.hero_product_code (품목 프리필: 상품명·중량·원산지·net)
po_document_item.hero_product_code = hero_code_mapping.hero_product_code AND hero_code_mapping.type='hub' (DC 작업 코드 프리필)
po_document.center_code = center.center_code (센터 표시)
po_document.supplier_seller_id = partner.seller_id (공급사 정보, 안4 대비)
-- =====================================================================
-- MD-02 발주 문서 관리 (안1: 다운로드 + 작성본 업로드 현황관리)
-- 신규 메뉴 「발주 문서 관리」 전용 테이블. 기존 「주문관리>발주현황관리」
-- (삼성·현대 대기업 API 발주)와는 완전 별개.
-- 안1 단계에서는 재고/선입선출(안2)·발송(안3)·공급사 로그인(안4) 미연결.
-- =====================================================================
-- 발주 문서 헤더 -------------------------------------------------------
CREATE TABLE po_document (
po_doc_id bigserial PRIMARY KEY, -- 발주 문서 PK
doc_type varchar(20) NOT NULL, -- 'PRE_PURCHASE'(선매입,1순위) / 'SALES'(판매분,2순위)
center_code varchar(20) NOT NULL, -- 센터(center.center_code 참조, FK 미설정: 안1 기록형)
delivery_place varchar(255), -- 납품처 (헤더)
contact varchar(100), -- 연락처 (헤더)
request_delivery_date date, -- 배송요청일 (헤더)
total_amount numeric(15,2) DEFAULT 0, -- TOTAL 합계금액 (VAT별도)
deposit_amount numeric(15,2) DEFAULT 0, -- 입금금액 (헤더)
supplier_seller_id varchar(100), -- 공급사 식별(partner.seller_id 참조, 안4 연동 대비)
status varchar(20) NOT NULL DEFAULT 'DRAFT', -- DRAFT/UPLOADED (안3~4: SENT/VIEWED 예약)
original_file_url varchar(500), -- 작성본 업로드 원본 파일 경로
template_version varchar(20), -- 다운로드 양식 버전
remark text, -- 비고
created_by varchar(100), -- 등록자(어드민 ID)
created_at timestamp NOT NULL DEFAULT (CURRENT_TIMESTAMP AT TIME ZONE 'Asia/Seoul'),
updated_by varchar(100),
updated_at timestamp
);
COMMENT ON TABLE po_document IS 'MD-02 발주 문서 헤더(선매입/판매분 2종 공용)';
COMMENT ON COLUMN po_document.doc_type IS 'PRE_PURCHASE=바이어 선매입 발주서 / SALES=판매분 발주서';
COMMENT ON COLUMN po_document.total_amount IS 'VAT별도 합계. 부가세는 품목 vat_amount 합산으로 별도 산출';
-- 발주 문서 품목 (2종 양식 컬럼 superset, doc_type로 사용 컬럼 구분) ----
CREATE TABLE po_document_item (
po_item_id bigserial PRIMARY KEY, -- 품목 PK
po_doc_id bigint NOT NULL REFERENCES po_document(po_doc_id) ON DELETE CASCADE,
line_no integer NOT NULL, -- NO (품목표 순번)
hero_product_code varchar(100) NOT NULL, -- 히어로코드 (seller_product.hero_product_code 참조)
easyadmin_code varchar(100), -- DC 작업 코드(이지어드민코드): hero_code_mapping type='hub'
barcode varchar(100), -- 상품바코드 (선매입)
dist_code varchar(100), -- 유통사코드 (판매분)
product_name text, -- 상품명
weight varchar(100), -- 중량 (선매입)
storage varchar(50), -- 상태(냉동/냉장 등) (선매입)
origin varchar(255), -- 원산지 (선매입)
tax_type varchar(20), -- 면과세: 'TAX'/'FREE' (MD-25 단가 면세/과세 연동)
box_qty integer, -- 박스입수 / BOX (양식 공통)
expiry_date date, -- 유통기한 (MD-01 소비기한 연동)
quantity integer, -- 수량
unit_price_ea numeric(15,2), -- 단가(ea) : net_unit_price 프리필 후 수기 수정
unit_price_box numeric(15,2), -- 단가(box) : net_price 프리필 후 수기 수정
supply_amount numeric(15,2), -- 공급가액 (선매입) / 공급가(판매분)
vat_amount numeric(15,2), -- 부가세액 (선매입, tax_type='TAX'일 때)
line_total numeric(15,2), -- 합계금액
order_qty integer, -- 발주량 (선매입)
unit varchar(50), -- 단위 (판매분)
ea_confirm integer, -- EA(확인) (판매분)
stock_qty integer, -- 재고량 (판매분; 안1은 수기, 안2에서 재고 연결)
remark varchar(255), -- 비고 (판매분)
price_prefilled boolean NOT NULL DEFAULT false, -- 매입단가 자동 프리필 여부(수기 수정 추적)
UNIQUE (po_doc_id, line_no)
);
COMMENT ON TABLE po_document_item IS 'MD-02 발주 문서 품목행. doc_type=PRE_PURCHASE/SALES에 따라 사용 컬럼 상이';
COMMENT ON COLUMN po_document_item.easyadmin_code IS 'DC 작업 코드. hero_code_mapping(hero_product_code,type=hub).specific_code에서 매핑';
COMMENT ON COLUMN po_document_item.unit_price_ea IS 'net(넷공급가=우리 매입 순공급가) 프리필. seller_product.net_unit_price 기준, 수기 수정 가능';