# 발주관리 화면 구현 가이드

> **화면명**: 발주관리
> **파일**: 발주관리.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 컴포넌트로 핵심 기능 구현 가능**
