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