# 자재/재고 (Material/Instock) 분석

## 개요
- **디렉토리**: `/instock/`
- **DB 테이블**: 자재 유형별 개별 테이블 (i_* 패턴)
- **주요 기능**: LOT 관리, 입고 검사, 자재 추적, 재고 관리

## 디렉토리 구조
```
/instock/
├── _request.php           # 요청 파라미터 정의
├── _row.php               # 행 렌더링
├── insert.php             # 데이터 저장
├── list.php               # 자재 목록
├── list_sheet.php         # 시트 형태 목록
├── statistics.php         # 통계
├── i_*.php                # 자재 유형별 입력 폼 (23개)
│   ├── i_EGI155.php       # EGI155 자재
│   ├── i_GIplate.php      # GI 판재
│   ├── i_SUSplate.php     # SUS 판재
│   ├── i_SUScoil.php      # SUS 코일
│   ├── i_angle.php        # 앵글
│   ├── i_anglebottom.php  # 앵글 바텀
│   ├── i_antifireglass.php # 방화 유리
│   ├── i_bendingcoil.php  # 벤딩 코일
│   ├── i_bracket.php      # 브라켓
│   ├── i_cerakwool.php    # 세락울
│   ├── i_controller.php   # 컨트롤러
│   ├── i_fiber.php        # 파이버
│   ├── i_fireproofWire.php # 방화 와이어
│   ├── i_motor.php        # 모터
│   ├── i_platesteel.php   # 판강
│   ├── i_pole.php         # 폴
│   ├── i_recpipe.php      # 각관
│   ├── i_shaft.php        # 샤프트
│   ├── i_sillica.php      # 실리카
│   ├── i_slatcoil.php     # 슬랫 코일
│   ├── i_wire.php         # 와이어
│   ├── i_wireDaehan.php   # 대한 와이어
│   └── i_Fireproof_sealings.php # 방화 씰링
├── fetch_*.php            # AJAX 데이터 조회
└── common/                # 공통 모듈
```

## DB 스키마

### 자재 공통 테이블 구조
```sql
CREATE TABLE i_[자재유형] (
    num INT AUTO_INCREMENT PRIMARY KEY,

    -- LOT 정보
    lot_no VARCHAR(50),              -- LOT 번호
    inspection_date DATE,            -- 검사일
    lotDone DATE,                    -- LOT 완료일

    -- 공급업체 정보
    supplier VARCHAR(100),           -- 공급업체
    manufacturer VARCHAR(100),       -- 제조사

    -- 자재 정보
    item_name VARCHAR(200),          -- 품명
    specification VARCHAR(200),      -- 규격
    unit VARCHAR(20),                -- 단위
    prodcode VARCHAR(50),            -- 제품코드

    -- 수량/가격 정보
    received_qty DECIMAL(15,2),      -- 입고수량
    weight_kg DECIMAL(15,2),         -- 중량(kg)
    purchase_price_excl_vat DECIMAL(15,0), -- 구매단가(부가세 제외)

    -- 참조/이력
    material_no VARCHAR(50),         -- 자재번호
    remarks TEXT,                    -- 비고

    -- 시스템 필드
    searchtag TEXT,                  -- 검색태그 (자동생성)
    update_log TEXT,                 -- 수정이력
    is_deleted TINYINT DEFAULT 0,    -- 삭제플래그

    INDEX idx_lot_no (lot_no),
    INDEX idx_supplier (supplier),
    INDEX idx_item_name (item_name)
);
```

### 검색태그 생성 로직
```php
// insert.php에서 searchtag 자동 생성
$searchtag = $lot_no . ' ' .
             $inspection_date . ' ' .
             $supplier . ' ' .
             $item_name . ' ' .
             $specification . ' ' .
             $unit . ' ' .
             $received_qty . ' ' .
             $material_no . ' ' .
             $manufacturer . ' ' .
             $purchase_price_excl_vat . ' ' .
             $weight_kg . ' ' .
             $lotDone . ' ' .
             $prodcode . ' ' .
             $remarks;
```

## 자재 유형별 특성

### 1. 코일 자재
- **테이블**: `i_SUScoil`, `i_bendingcoil`, `i_slatcoil`
- **특징**: 중량(kg) 기반 재고 관리
- **추가 컬럼**: 두께, 폭, 소재

### 2. 판재 자재
- **테이블**: `i_GIplate`, `i_SUSplate`, `i_platesteel`
- **특징**: 면적(m²) 또는 장 단위 관리
- **추가 컬럼**: 가로, 세로, 두께

### 3. 부품 자재
- **테이블**: `i_motor`, `i_controller`, `i_bracket`
- **특징**: 개수 단위 관리, 모델별 구분
- **추가 컬럼**: 모델명, 제조번호

### 4. 구조재
- **테이블**: `i_angle`, `i_pole`, `i_shaft`, `i_recpipe`
- **특징**: 길이(m) 단위 관리
- **추가 컬럼**: 길이, 단면규격

## 비즈니스 로직

### LOT 관리
1. **LOT 번호 생성**: `lotnum_generator.php`
2. **LOT 완료 처리**: `lotDone` 날짜 설정
3. **LOT 추적**: 출하 시 LOT 번호 연결

### 입고 검사
1. 자재 입고 시 검사일(`inspection_date`) 기록
2. 합격 시 재고에 반영
3. 불합격 시 반품 처리

### 가격 관리
- 구매단가는 부가세 제외 금액 저장
- 환율/원자재 가격 변동 반영 필요

## SAM 마이그레이션 포인트

### 1. 테이블 통합
```sql
-- 5130: 자재 유형별 개별 테이블
i_SUSplate, i_GIplate, i_motor, ...

-- SAM: 단일 테이블 + 카테고리
materials (
    id,
    tenant_id,
    category_id,  -- categories 테이블 참조
    lot_no,
    ...
)
```

### 2. 카테고리 계층화
```sql
-- SAM: 4단계 카테고리 구조
material_categories (
    id,
    parent_id,
    name,
    level,  -- 1: 대분류, 2: 중분류, 3: 소분류, 4: 세분류
    attributes JSON  -- 카테고리별 추가 속성 정의
)
```

### 3. 속성 동적 관리
```sql
-- SAM: 카테고리별 동적 속성
material_attributes (
    material_id,
    attribute_key,
    attribute_value,
    attribute_type  -- string, number, date, etc.
)
```

### 4. LOT 추적 강화
```sql
-- SAM: LOT 이력 테이블
lot_histories (
    id,
    lot_id,
    action,  -- created, inspected, used, returned
    quantity,
    reference_type,  -- output, production
    reference_id,
    created_at
)
```

## 관련 파일 참조
- `/instock/insert.php` - INSERT/UPDATE 로직
- `/instock/_request.php` - 요청 파라미터 정의
- `/instock/list.php` - 목록 조회 쿼리
- `/instock/fetch_inspection.php` - 검사 데이터 조회
