155 lines
5.7 KiB
Markdown
155 lines
5.7 KiB
Markdown
|
|
# 수주 데이터 스키마 분석
|
|||
|
|
|
|||
|
|
> 분석 일시: 2024-12-18
|
|||
|
|
> 소스: design/mes기획서_리액트/src/configs/orderMasterConfig.js
|
|||
|
|
|
|||
|
|
## 수주 유형 (entityTypes)
|
|||
|
|
|
|||
|
|
| ID | 코드 | 이름 | 설명 |
|
|||
|
|
|----|------|------|------|
|
|||
|
|
| 1 | NORMAL | 일반수주 | 견적 기반 일반 수주 |
|
|||
|
|
| 2 | ADDITIONAL | 추가수주 | 기존 수주 추가분 |
|
|||
|
|
| 3 | DIRECT | 직접수주 | 견적 없이 직접 입력 |
|
|||
|
|
|
|||
|
|
## 제품 카테고리 (생산공정 분류)
|
|||
|
|
|
|||
|
|
| ID | 코드 | 이름 |
|
|||
|
|
|----|------|------|
|
|||
|
|
| 1 | SCREEN | 스크린 |
|
|||
|
|
| 2 | FOLD | 절곡 |
|
|||
|
|
| 3 | SLAT | 슬랫 |
|
|||
|
|
| 4 | ASSY | 조립 |
|
|||
|
|
|
|||
|
|
## 섹션 구조 (masterSections)
|
|||
|
|
|
|||
|
|
| ID | 키 | 이름 | 타입 | 설명 |
|
|||
|
|
|----|-----|------|------|------|
|
|||
|
|
| 1 | basicInfo | 기본정보 | general | 수주 기본 정보 |
|
|||
|
|
| 2 | deliveryInfo | 납품정보 | general | 납품 관련 정보 |
|
|||
|
|
| 3 | itemInfo | 품목정보 | **multiRow** | 수주 품목 목록 |
|
|||
|
|
| 4 | productionSpec | 제작사양 | **multiRow** | 제작 상세 사양 |
|
|||
|
|
| 5 | amountInfo | 금액정보 | general | 금액 합계 |
|
|||
|
|
| 6 | etcInfo | 기타정보 | general | 기타 정보 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 필드 상세 (masterFields)
|
|||
|
|
|
|||
|
|
### 기본정보 (basicInfo)
|
|||
|
|
|
|||
|
|
| ID | 필드키 | 필드명 | 입력타입 | 필수 | 자동생성 | 설명 |
|
|||
|
|
|----|--------|--------|----------|------|----------|------|
|
|||
|
|
| 1 | orderNo | 수주번호 | text | ✅ | ✅ | 수주 식별 번호 |
|
|||
|
|
| 2 | orderDate | 수주일 | date | ✅ | - | 수주 등록일 |
|
|||
|
|
| 3 | quoteNo | 견적번호 | text | - | - | 연결된 견적번호 |
|
|||
|
|
| 4 | customerName | 거래처명 | text | ✅ | - | 거래처명 |
|
|||
|
|
| 5 | customerId | 거래처ID | text | - | - | 거래처 식별자 |
|
|||
|
|
| 6 | siteName | 현장명 | text | ✅ | - | 설치 현장명 |
|
|||
|
|
| 7 | manager | 담당자 | text | - | - | 거래처 담당자 |
|
|||
|
|
| 8 | contact | 연락처 | text | - | - | 담당자 연락처 |
|
|||
|
|
|
|||
|
|
### 납품정보 (deliveryInfo)
|
|||
|
|
|
|||
|
|
| ID | 필드키 | 필드명 | 입력타입 | 필수 | 옵션 |
|
|||
|
|
|----|--------|--------|----------|------|------|
|
|||
|
|
| 10 | dueDate | 납기일 | date | ✅ | - |
|
|||
|
|
| 11 | deliveryMethod | 배송방법 | select | - | 직접배차, 상차, 택배, 화물, 직접배송 |
|
|||
|
|
| 12 | deliveryAddress | 납품주소 | text | - | - |
|
|||
|
|
| 13 | receiverName | 수령자명 | text | - | - |
|
|||
|
|
| 14 | receiverPhone | 수령자연락처 | text | - | - |
|
|||
|
|
|
|||
|
|
### 품목정보 (itemInfo) - 다중행
|
|||
|
|
|
|||
|
|
| ID | 필드키 | 필드명 | 입력타입 | 필수 | 옵션/검증 |
|
|||
|
|
|----|--------|--------|----------|------|----------|
|
|||
|
|
| 20 | productCode | 품목코드 | text | - | - |
|
|||
|
|
| 21 | productName | 품목명 | select | ✅ | 국민방화스크린셔터, 방화셔터, 방연셔터 |
|
|||
|
|
| 22 | category | 카테고리 | select | - | 스크린, 절곡, 슬랫, 조립 |
|
|||
|
|
| 23 | floor | 층 | text | - | - |
|
|||
|
|
| 24 | location | 위치 | text | - | - |
|
|||
|
|
| 25 | openWidth | 개구폭(mm) | number | ✅ | min:500, max:15000 |
|
|||
|
|
| 26 | openHeight | 개구높이(mm) | number | ✅ | min:500, max:10000 |
|
|||
|
|
| 27 | qty | 수량 | number | ✅ | min:1 |
|
|||
|
|
| 28 | unitPrice | 단가 | number | - | - |
|
|||
|
|
| 29 | amount | 금액 | number | - | **자동계산** |
|
|||
|
|
|
|||
|
|
### 제작사양 (productionSpec) - 다중행
|
|||
|
|
|
|||
|
|
| ID | 필드키 | 필드명 | 입력타입 | 자동계산 | 옵션 |
|
|||
|
|
|----|--------|--------|----------|----------|------|
|
|||
|
|
| 30 | prodWidth | 제작폭(mm) | number | ✅ | 개구폭+140 |
|
|||
|
|
| 31 | prodHeight | 제작높이(mm) | number | ✅ | MAX(개구높이+400, 2950) |
|
|||
|
|
| 32 | guideRailType | 가이드레일형태 | select | - | 백면형, 양면형, 편면형 |
|
|||
|
|
| 33 | guideRailSpec | 가이드레일규격 | select | - | 120-70, 150-80, 180-90 |
|
|||
|
|
| 34 | finish | 마감 | select | - | SUS마감, 분체도장, 용융아연 |
|
|||
|
|
| 35 | shaft | 샤프트 | number | ✅ | 폭>6000:5인치, 그외:4인치 |
|
|||
|
|
| 36 | capacity | 전동용량 | number | ✅ | 폭>6000:300kg, 그외:160kg |
|
|||
|
|
|
|||
|
|
### 금액정보 (amountInfo)
|
|||
|
|
|
|||
|
|
| ID | 필드키 | 필드명 | 입력타입 | 자동계산 |
|
|||
|
|
|----|--------|--------|----------|----------|
|
|||
|
|
| 40 | totalAmount | 총금액 | number | ✅ (품목 금액 합계) |
|
|||
|
|
|
|||
|
|
### 기타정보 (etcInfo)
|
|||
|
|
|
|||
|
|
| ID | 필드키 | 필드명 | 입력타입 |
|
|||
|
|
|----|--------|--------|----------|
|
|||
|
|
| 50 | note | 비고 | textarea |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 자동계산 규칙 (calculations)
|
|||
|
|
|
|||
|
|
| 필드 | 수식 | 설명 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| prodWidth | `openWidth + 140` | 제작폭 = 개구폭 + 140 |
|
|||
|
|
| prodHeight | `MAX(openHeight + 400, 2950)` | 제작높이 = MAX(개구높이+400, 2950) |
|
|||
|
|
| shaft | `openWidth > 6000 ? 5 : 4` | 샤프트 인치 |
|
|||
|
|
| capacity | `openWidth > 6000 ? 300 : 160` | 전동용량 kg |
|
|||
|
|
| amount | `qty * unitPrice` | 금액 = 수량 × 단가 |
|
|||
|
|
| totalAmount | `SUM(items.amount)` | 총금액 = 품목 금액 합계 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 페이지 템플릿
|
|||
|
|
|
|||
|
|
### 일반 수주 (order_normal)
|
|||
|
|
- 경로: `/판매관리/수주_등록`
|
|||
|
|
- 유형: NORMAL
|
|||
|
|
- 섹션: 기본정보 → 납품정보 → 품목정보 → 제작사양 → 금액정보 → 기타정보
|
|||
|
|
|
|||
|
|
### 추가 수주 (order_additional)
|
|||
|
|
- 경로: `/판매관리/수주_추가`
|
|||
|
|
- 유형: ADDITIONAL
|
|||
|
|
- 섹션: 기본정보(간소화) → 추가 품목 → 기타정보
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## API 엔드포인트 추정
|
|||
|
|
|
|||
|
|
### 수주 CRUD
|
|||
|
|
```
|
|||
|
|
GET /api/orders - 수주 목록
|
|||
|
|
GET /api/orders/{id} - 수주 상세
|
|||
|
|
POST /api/orders - 수주 등록
|
|||
|
|
PUT /api/orders/{id} - 수주 수정
|
|||
|
|
DELETE /api/orders/{id} - 수주 삭제
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 관련 API
|
|||
|
|
```
|
|||
|
|
GET /api/orders/{id}/items - 수주 품목 목록
|
|||
|
|
POST /api/orders/{id}/items - 품목 추가
|
|||
|
|
PUT /api/orders/{id}/items/{itemId} - 품목 수정
|
|||
|
|
DELETE /api/orders/{id}/items/{itemId} - 품목 삭제
|
|||
|
|
POST /api/orders/from-quote/{quoteId} - 견적에서 수주 전환
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 다음 분석 단계
|
|||
|
|
|
|||
|
|
1. QuoteDetailNew.jsx, QuoteDocumentDialogs.jsx - UI 구조 및 액션
|
|||
|
|
2. App.jsx 수주 섹션 - 비즈니스 로직, 상태 관리
|