# 입출고관리 화면 구현 가이드

> **화면명**: 입출고관리
> **파일**: 입출고관리.html
> **분류**: 물류관리
> **구현 가능**: ⚠️ 부분 (그룹화 테이블 필요)

---

## 1. 화면 개요

자재/제품의 입고 및 출고 내역을 통합 관리하는 화면입니다.

### 핵심 기능
- 입출고 내역 조회/검색
- 그룹화 기능 (입출고구분, 창고, 카테고리별)
- 엑셀 업로드/다운로드

---

## 2. 화면 레이아웃

```
┌─────────────────────────────────────────────────────────────────┐
│ [입출고구분▼][카테고리▼][창고▼][품목코드][품목명][기간][초기화][검색]│
│                                          [사용자옵션][업로드][다운로드]│
├─────────────────────────────────────────────────────────────────┤
│ 📋 입출고 내역                         전체 150건                │
│ ─────────────────────────────────────────────────────────────  │
│ Group by: [입출고구분▼]                                         │
│ ─────────────────────────────────────────────────────────────  │
│ │▼ 입고 (80)                                                   │
│ │  │IN-001|구매입고|2026-01-30|본사창고|P-001|원자재A|100|KG   │
│ │  │IN-002|생산입고|2026-01-30|제1창고|P-002|제품A  |50 |EA   │
│ │▼ 출고 (70)                                                   │
│ │  │OUT-001|판매출고|2026-01-30|본사창고|P-003|제품B|30|EA    │
└─────────────────────────────────────────────────────────────────┘
```

---

## 3. V2 컴포넌트 매핑

| HTML 영역 | V2 컴포넌트 | 상태 |
|-----------|-------------|------|
| 검색 섹션 | `v2-table-search-widget` | ✅ 가능 |
| 입출고 목록 (그룹화) | `v2-table-list` | ⚠️ 그룹화 미지원 |

---

## 4. 테이블 정의

```typescript
columns: [
  { id: 'checkbox', type: 'checkbox', width: 50 },
  { id: 'inout_type', label: '입출고구분', width: 100 },
  { id: 'category', label: '카테고리', width: 120 },
  { id: 'doc_no', label: '전표번호', width: 120 },
  { id: 'process_date', label: '처리일자', width: 100 },
  { id: 'warehouse', label: '창고', width: 120 },
  { id: 'location', label: '위치', width: 100 },
  { id: 'item_code', label: '품목코드', width: 120 },
  { id: 'item_name', label: '품목명', width: 200 },
  { id: 'quantity', label: '수량', width: 100, align: 'right' },
  { id: 'unit', label: '단위', width: 60 },
  { id: 'lot_no', label: '로트번호', width: 120 },
  { id: 'customer', label: '거래처', width: 120 },
  { id: 'manager', label: '담당자', width: 100 },
  { id: 'remark', label: '비고', width: 200 }
]
```

---

## 5. 검색 조건

| 필드명 | 컴포넌트 | 옵션 |
|--------|----------|------|
| 입출고구분 | `v2-select` | 입고, 출고 |
| 카테고리 | `v2-select` | 구매입고, 생산입고, 반품입고, 판매출고, 생산출고 등 |
| 창고 | `v2-select` | 본사창고, 제1창고, 제2창고 |
| 품목코드 | `v2-input` | - |
| 품목명 | `v2-input` | - |
| 기간 | `v2-date` | dateRange: true |

---

## 6. 그룹화 기능 (v2-grouped-table 필요)

```typescript
groupByOptions: [
  { id: 'inout_type', label: '입출고구분' },
  { id: 'category', label: '카테고리' },
  { id: 'warehouse', label: '창고' },
  { id: 'item_code', label: '품목코드' },
  { id: 'process_date', label: '처리일자' },
  { id: 'customer', label: '거래처' }
]
```

---

## 7. 현재 구현 가능 범위

### ✅ 가능
- 검색 영역
- 일반 테이블 목록

### ⚠️ 부분 가능
- 그룹화 없이 필터로 대체

### ❌ 불가능
- 동적 그룹화

---

## 8. 간소화 구현 JSON

```json
{
  "screen_code": "INOUT_MAIN",
  "screen_name": "입출고관리",
  "components": [
    {
      "type": "v2-table-search-widget",
      "position": { "x": 0, "y": 0, "w": 12, "h": 2 },
      "config": {
        "searchFields": [
          { "type": "select", "id": "inout_type", "placeholder": "입출고구분",
            "options": [
              { "value": "IN", "label": "입고" },
              { "value": "OUT", "label": "출고" }
            ]
          },
          { "type": "select", "id": "category", "placeholder": "카테고리",
            "options": [
              { "value": "purchase", "label": "구매입고" },
              { "value": "production_in", "label": "생산입고" },
              { "value": "return_in", "label": "반품입고" },
              { "value": "sales", "label": "판매출고" },
              { "value": "production_out", "label": "생산출고" }
            ]
          },
          { "type": "select", "id": "warehouse", "placeholder": "창고" },
          { "type": "input", "id": "item_code", "placeholder": "품목코드" },
          { "type": "input", "id": "item_name", "placeholder": "품목명" },
          { "type": "date", "id": "date_range", "placeholder": "처리일자", "dateRange": true }
        ],
        "buttons": [
          { "label": "초기화", "action": "reset" },
          { "label": "검색", "action": "search", "variant": "primary" }
        ]
      }
    },
    {
      "type": "v2-table-list",
      "position": { "x": 0, "y": 2, "w": 12, "h": 10 },
      "config": {
        "title": "입출고 내역",
        "entityId": "inventory_transaction",
        "showTotalCount": true,
        "columns": [
          { "id": "inout_type", "label": "입출고구분", "width": 100 },
          { "id": "category", "label": "카테고리", "width": 120 },
          { "id": "doc_no", "label": "전표번호", "width": 120 },
          { "id": "process_date", "label": "처리일자", "width": 100 },
          { "id": "warehouse", "label": "창고", "width": 120 },
          { "id": "item_code", "label": "품목코드", "width": 120 },
          { "id": "item_name", "label": "품목명", "width": 200 },
          { "id": "quantity", "label": "수량", "width": 100, "align": "right" },
          { "id": "unit", "label": "단위", "width": 60 }
        ]
      }
    }
  ]
}
```

**v2-grouped-table 개발 시 그룹화 기능 추가 가능**
