# 단가 수정 가이드

> **작성일**: 2026-03-20
> **대상**: SAM 관리자 (서비스 사용자)
> **관련 정책**: [단가 정책](../rules/pricing-policy.md)

---

## 1. 단가 수정이 필요한 상황

| 상황 | 조치 방법 |
|------|----------|
| 원자재 가격이 인상/인하됨 | 해당 품목의 매입단가 수정 → 판매단가 자동 재계산 |
| 마진율을 변경하고 싶음 | 해당 품목의 마진율 수정 → 판매단가 자동 재계산 |
| 특정 고객그룹에 할인가 적용 | 고객그룹용 별도 단가 신규 등록 |
| 견적서에서 특정 품목 단가만 조정 | 견적 작성 화면에서 직접 수정 (마스터 단가 변경 없음) |

---

## 2. 단가 관리 메뉴 접근

**경로**: 서비스(React) → 판매관리 → **단가관리**

```
URL: /sales/pricing-management
```

---

## 3. 기존 단가 수정 절차

### Step 1: 단가 목록에서 대상 품목 찾기

단가관리 화면에서 수정할 품목을 찾는다.

- **품목 유형 필터**: FG(완제품), PT(부품), SM(부자재), RM(원자재), CS(소모품)
- **상태 필터**: 초안(draft), 활성(active), 확정(finalized), 미등록
- **검색**: 품목코드 또는 품명으로 검색

> **주의**: 상태가 `확정(finalized)`인 단가는 수정할 수 없다. 확정된 단가를 변경하려면 **새 단가를 등록**해야 한다.

### Step 2: 단가 상세 화면 진입

목록에서 품목을 클릭하면 상세 화면으로 이동한다.

```
URL: /sales/pricing-management/{id}
```

### Step 3: 수정 모드 전환

상세 화면에서 **"수정"** 버튼을 클릭하여 수정 모드로 전환한다.

### Step 4: 단가 정보 수정

수정 가능한 필드:

| 필드 | 설명 | 판매단가에 영향 |
|------|------|:--------------:|
| **매입단가(입고가)** | 공급업체 구매 가격 | ✅ |
| **가공비** | 가공/처리 비용 | ✅ |
| **LOSS율 (%)** | 자재 손실 비율 | ✅ |
| **마진율 (%)** | 이익률 | ✅ |
| **반올림 규칙** | round(반올림) / ceil(올림) / floor(버림) | ✅ |
| **반올림 단위** | 1 / 10 / 100 / 1000 | ✅ |
| **적용 시작일** | 이 단가가 유효해지는 날짜 | ❌ |
| **적용 종료일** | 단가 만료일 (비워두면 무기한) | ❌ |
| **공급업체** | 납품 업체명 | ❌ |
| **비고** | 메모 | ❌ |

위 4개 필드(매입단가, 가공비, LOSS율, 마진율)를 수정하면 **판매단가가 실시간으로 자동 재계산**된다.

### Step 5: 판매단가 자동 계산 확인

화면에서 계산 결과를 실시간으로 확인한다.

```
판매단가 = 반올림( (매입단가 + 가공비) × (1 + LOSS율/100) × (1 + 마진율/100) )

예시:
  매입단가: 10,000원
  가공비:   2,000원
  LOSS율:   5%
  마진율:   25%
  반올림:   round, 100원 단위

  = (10,000 + 2,000) × 1.05 × 1.25
  = 15,750
  → 반올림(100) = 15,800원
```

### Step 6: 저장

**"저장"** 버튼을 클릭한다.

- 변경 사유(선택)를 입력할 수 있다
- 저장 시 **수정 이력(리비전)**이 자동으로 기록된다
- 변경 전/후 스냅샷이 보관되어 언제든 이력 확인 가능

### Step 7: 확정 (선택사항)

단가가 최종 결정되면 **"확정"** 버튼으로 확정할 수 있다.

```
확정 전: 수정/삭제 가능
확정 후: 수정/삭제 불가 (읽기전용)
```

> 확정된 단가를 변경해야 할 경우, 새로운 단가를 등록하면 기존 단가의 종료일이 자동으로 설정된다.

---

## 4. 신규 단가 등록 절차

기존 단가가 없거나 확정된 단가를 대체하려면 신규 등록한다.

### Step 1: 등록 화면 진입

단가관리 목록에서 **"신규 등록"** 버튼 클릭.

```
URL: /sales/pricing-management/create
```

### Step 2: 품목 선택 + 단가 정보 입력

- 품목 유형 및 품목을 선택한다
- 매입단가, 가공비, LOSS율, 마진율 등을 입력한다
- 적용 시작일을 지정한다

### Step 3: 저장

저장하면 동일 품목의 기존 무기한 단가가 자동으로 종료 처리된다.

```
기존: 2026-01-01 ~ 무기한 (active)
    → 자동으로 effective_to = 2026-03-19로 변경

신규: 2026-03-20 ~ 무기한 (active)
    → 새로 등록됨
```

---

## 5. 견적에서 단가 직접 수정

견적 작성 시 **마스터 단가를 변경하지 않고** 해당 견적에서만 단가를 조정할 수 있다.

### 절차

1. 판매관리 → 견적관리 → 견적 작성/수정
2. BOM 자동산출 실행 (제품 선택 + 규격 입력 → "견적 산출")
3. 산출 결과 테이블에서 **개별 품목의 단가 필드를 클릭**하여 직접 수정
4. 수정하면 해당 품목의 합계와 견적 총액이 실시간 재계산됨
5. 견적 저장

> **핵심**: 견적에서 수정한 단가는 **이 견적에만 적용**된다. 단가 마스터(`prices` 테이블)에는 영향이 없다.

---

## 6. 고객그룹 차등가 설정

동일 품목이라도 고객그룹에 따라 다른 단가를 적용할 수 있다.

### 절차

1. 단가 신규 등록 시 **고객그룹**을 지정한다
2. 해당 그룹 소속 거래처에는 그룹 전용 단가가 우선 적용된다
3. 그룹 단가가 없으면 기본가(고객그룹=없음)가 적용된다

```
조회 우선순위:
  1순위: 고객그룹 전용 단가 (client_group_id = 그룹ID)
  2순위: 기본 단가 (client_group_id = NULL)
```

---

## 7. 수정 이력 확인

### 절차

1. 단가 상세 화면 진입
2. **"수정 이력"** 버튼 클릭
3. 리비전 목록 확인 (리비전 번호, 변경일시, 변경자, 변경 사유)
4. 각 리비전의 변경 전/후 데이터 비교 가능

---

## 8. 주의사항

| 항목 | 설명 |
|------|------|
| 확정된 단가 | 수정/삭제 불가. 새 단가를 등록해야 함 |
| 수주 완료된 건 | 수주 시점의 단가는 이미 복제됨. 마스터 단가를 수정해도 기존 수주에는 영향 없음 |
| 견적 내 단가 수정 | 해당 견적에만 적용. 마스터 단가에 영향 없음 |
| 적용 시작일 중복 | 동일 품목+고객그룹+시작일 조합은 중복 등록 불가 |

---

## 9. 단가 상태 요약

```
draft(초안) → active(활성) → finalized(확정)
                 │
                 └→ inactive(비활성)

draft/active:    수정 ✅  삭제 ✅  확정 ✅
inactive:        수정 ✅  삭제 ✅  확정 ❌
finalized:       수정 ❌  삭제 ❌  (새 단가 등록으로 대체)
```

---

## 관련 문서

- [단가 정책](../rules/pricing-policy.md) — 6 Depth 단가 체계, 계산 공식, 버전관리 개선방향
- [견적 시스템](../features/quotes/README.md) — BOM 산출, 견적 생성 흐름
- [품목 정책](../rules/item-policy.md) — 품목 유형 체계

---

**최종 업데이트**: 2026-03-20
