# 발주관리 화면 구현 가이드 > **화면명**: 발주관리 > **파일**: 발주관리.html > **분류**: 구매관리 > **구현 가능**: ✅ 완전 (현재 V2 컴포넌트) --- ## 1. 화면 개요 자재/원자재 발주를 생성하고 관리하는 화면입니다. ### 핵심 기능 - 발주 목록 조회/검색 - 발주 등록/수정/삭제 - 발주서 인쇄 - 입고 연계 --- ## 2. 화면 레이아웃 ``` ┌─────────────────────────────────────────────────────────────────┐ │ [기간] [공급업체] [발주번호] [품목명] [상태▼] [초기화][조회] │ │ [사용자옵션][OCR][엑셀] │ ├─────────────────────────────────────────────────────────────────┤ │ 📋 발주 목록 [신규등록] │ │ ───────────────────────────────────────────────────────────── │ │ │□|발주번호 |발주일 |공급업체 |발주금액 |상태 |담당자│ │ │ │□|PO-2026..|2026-01-30|(주)원자재|5,000,000 |진행중|홍길동│ │ │ │□|PO-2026..|2026-01-29|(주)부품사|3,200,000 |완료 |김철수│ │ │ │□|PO-2026..|2026-01-28|(주)자재사|1,800,000 |진행중|이영희│ │ └─────────────────────────────────────────────────────────────────┘ ``` --- ## 3. V2 컴포넌트 매핑 | HTML 영역 | V2 컴포넌트 | 상태 | |-----------|-------------|------| | 검색 섹션 | `v2-table-search-widget` | ✅ 가능 | | 발주 목록 | `v2-table-list` | ✅ 가능 | | 발주 등록 모달 | `v2-modal-form` (필요) | ⚠️ 대체 가능 | --- ## 4. 테이블 정의 ```typescript columns: [ { id: 'checkbox', type: 'checkbox', width: 50 }, { id: 'po_no', label: '발주번호', width: 120 }, { id: 'po_date', label: '발주일', width: 100 }, { id: 'supplier_name', label: '공급업체', width: 200 }, { id: 'total_amount', label: '발주금액', width: 120, align: 'right', format: 'currency' }, { id: 'delivery_date', label: '납기일', width: 100 }, { id: 'status', label: '상태', width: 80 }, { id: 'receive_status', label: '입고상태', width: 100 }, { id: 'manager', label: '담당자', width: 100 } ] ``` --- ## 5. 검색 조건 | 필드명 | 컴포넌트 | 설정 | |--------|----------|------| | 기간 | `v2-date` | dateRange: true | | 공급업체 | `v2-input` | placeholder: "공급업체" | | 발주번호 | `v2-input` | placeholder: "발주번호" | | 품목명 | `v2-input` | placeholder: "품목명" | | 상태 | `v2-select` | 작성중, 발주, 부분입고, 입고완료 | --- ## 6. 구현 JSON ```json { "screen_code": "PO_MAIN", "screen_name": "발주관리", "components": [ { "type": "v2-table-search-widget", "position": { "x": 0, "y": 0, "w": 12, "h": 2 }, "config": { "searchFields": [ { "type": "date", "id": "date_range", "placeholder": "발주기간", "dateRange": true }, { "type": "input", "id": "supplier_name", "placeholder": "공급업체" }, { "type": "input", "id": "po_no", "placeholder": "발주번호" }, { "type": "input", "id": "item_name", "placeholder": "품목명" }, { "type": "select", "id": "status", "placeholder": "상태" } ], "buttons": [ { "label": "초기화", "action": "reset", "variant": "outline" }, { "label": "조회", "action": "search", "variant": "primary" } ], "rightButtons": [ { "label": "사용자옵션", "action": "userOptions" }, { "label": "OCR입력", "action": "ocr" }, { "label": "엑셀다운로드", "action": "excelDownload" } ] } }, { "type": "v2-table-list", "position": { "x": 0, "y": 2, "w": 12, "h": 10 }, "config": { "title": "발주 목록", "entityId": "purchase_order", "buttons": [ { "label": "신규등록", "action": "create", "variant": "primary" } ], "columns": [ { "id": "po_no", "label": "발주번호", "width": 120 }, { "id": "po_date", "label": "발주일", "width": 100 }, { "id": "supplier_name", "label": "공급업체", "width": 200 }, { "id": "total_amount", "label": "발주금액", "width": 120, "align": "right" }, { "id": "delivery_date", "label": "납기일", "width": 100 }, { "id": "status", "label": "상태", "width": 80 }, { "id": "manager", "label": "담당자", "width": 100 } ], "rowActions": [ { "label": "상세", "action": "view" }, { "label": "수정", "action": "edit" }, { "label": "삭제", "action": "delete" } ] } } ] } ``` --- ## 7. 데이터베이스 테이블 ### purchase_order (발주 헤더) ```sql CREATE TABLE purchase_order ( id SERIAL PRIMARY KEY, company_code VARCHAR(20) NOT NULL, po_no VARCHAR(50) NOT NULL, po_date DATE NOT NULL, supplier_code VARCHAR(50), supplier_name VARCHAR(200), total_amount NUMERIC(15,2), tax_amount NUMERIC(15,2), status VARCHAR(20) DEFAULT 'draft', delivery_date DATE, manager VARCHAR(100), remark TEXT, created_at TIMESTAMPTZ DEFAULT NOW() ); ``` --- ## 8. 구현 체크리스트 - [x] 검색 영역: v2-table-search-widget - [x] 발주 목록 테이블: v2-table-list - [x] 컬럼 정렬/필터 - [ ] 발주 등록 모달 - [ ] OCR 입력 기능 (별도) - [ ] 인쇄 기능 **현재 V2 컴포넌트로 핵심 기능 구현 가능**