5.9 KiB
5.9 KiB
발주관리 화면 구현 가이드
화면명: 발주관리 파일: 발주관리.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. 테이블 정의
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
{
"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 (발주 헤더)
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. 구현 체크리스트
- 검색 영역: v2-table-search-widget
- 발주 목록 테이블: v2-table-list
- 컬럼 정렬/필터
- 발주 등록 모달
- OCR 입력 기능 (별도)
- 인쇄 기능
현재 V2 컴포넌트로 핵심 기능 구현 가능