203 lines
6.0 KiB
Markdown
203 lines
6.0 KiB
Markdown
|
|
# 자재/재고 (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` - 검사 데이터 조회
|