> ## Documentation Index
> Fetch the complete documentation index at: https://docs.alforse.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 유통기한

> 일련번호 및 배치로 추적되는 재고에 만료일을 부여하고, 만료일 계산 방법을 선택하며, 만료된 재고를 출고, 이동 또는 출하할 수 있는지 결정합니다.

유통기한은 품목의 각 로트 또는 일련번호에 만료일을 부여하고 해당 재고가 사용될 때 이를 강제합니다. 품질, 재고, 생산 계획 담당자가 품목당 한 번 구성하며, 작업자는 출고, 이동, 피킹, 출하 시점에 이를 접합니다.

## 개요

만료일은 품목이 아니라 실제 **추적 대상**에 속합니다. 그래서 유통기한은 **일련번호** 및 **배치로 추적되는** 품목에만 존재합니다. 대체 가능한 *재고* 및 *비재고* 품목에는 날짜를 담을 유닛별 레코드가 없습니다.

세 가지 설정이 함께 작동합니다.

| 설정 | 범위 | 결정하는 내용 |
| - | - | - |
| 유통기한 **정책** | 한 품목, 피킹 방법에서 | 새 로트 또는 일련번호가 날짜를 받는 방식. |
| **만료일** | 하나의 추적 대상 | 해당 로트 또는 일련번호가 만료되는 시기. |
| **만료된 대상 정책** | 회사 전체 | 누군가 만료일이 지난 재고를 사용할 때 일어나는 일. |

예를 들어 **120일** 고정 기간 정책의 품목이 배치를 입고하면, 그 배치는 입고 전기일로부터 120일 후에 만료됩니다. 그때부터 기본 회사 규칙에서는 작업에 출고하는 것이 거부됩니다.

## 모드 선택

품목의 정책에는 하나의 **모드**가 있습니다. `NotManaged`가 기본값입니다. 만료가 추적되지 않으며, 이를 선택하면 기존 정책이 제거됩니다. 나머지 세 모드는 각각 날짜를 다르게 계산합니다. 품목 양식은 이를 아래 라벨의 선택 카드로 표시합니다.

| 모드(저장된 값) | 품목 양식의 카드 | 날짜 설정 방식 | 사용 가능한 품목 |
| - | - | - | - |
| Fixed Duration | **고정 보존 기간** | 시작 이벤트 **더하기 일수**. | 제조 또는 구매 품목 |
| Calculated | **자재로부터 상속** | 이를 만드는 데 소비된 **구성품 중 가장 이른 만료일**. | 제조 품목 |
| Set on Receipt | **입고 시 입력됨** | 입고 시 **사용자가 입력**하며 계산되지 않습니다. | 구매 품목 |

적용할 수 없는 모드는 양식에서 숨겨집니다. 제조 품목은 입고할 것이 없으므로 *입고 시 설정*이 제공되지 않고, 구매 품목은 BOM을 소비하지 않으므로 *계산*이 제공되지 않습니다. 구매와 제조를 모두 하는 품목은 세 가지를 모두 봅니다.

HEADS UP

**유통기한은 하나의 “일수” 필드가 아닙니다**

**고정 기간**만 일수입니다. *계산*은 투입물 중 가장 빠른 만료일을 상속하고, *입고 시 설정*은 공급업체가 인쇄한 날짜를 수동으로 기록합니다. 모든 품목을 "입고일 + N일"로 취급하는 것은 세 모드 중 둘에서는 잘못입니다.

### 고정 기간 시계가 시작되는 시점

시작 이벤트는 품목의 조달 방식에 따라 다릅니다.

* **구매 품목**은 오늘이 아니라 **입고 전기일**부터 시작합니다.
* **제조 품목**은 **작업 공정작업**이 끝나거나 시작될 때 시작합니다. 이를 하나의 **트리거 프로세스**(예: *저온 살균* 또는 *포장*)로 제한하고 **이전** 또는 **이후** 타이밍을 선택할 수 있습니다. 서브어셈블리는 자신의 공정작업에서 자체 배치에 날짜를 부여합니다.

### 계산 모드가 가장 이른 투입물을 찾는 방식

**계산** 품목은 소비하는 추적 구성품의 만료일 중 최솟값을 가지므로, 제작물은 가장 유효기간이 짧은 원료보다 오래 존속할 수 없습니다. 회사의 *계산된 투입 범위*가 어떤 투입물이 집계되는지 결정합니다. `AllInputs`(기본값)는 날짜가 있는 모든 투입물을 사용하고, `ManagedInputsOnly`는 자체 유통기한 정책이 있는 투입물만 사용합니다.

품목의 BOM에 유통기한 정책이 있는 투입물이 없으면 BOM에서 계산되는 만료일이 없으므로 품목 양식에 **"BOM 투입 항목 중 유효기간 정책이 설정된 항목이 없습니다"** 경고가 표시됩니다.

## 품목 설정

정책은 품목의 **피킹 방법**(한 위치의 품목)에 있습니다. 유통기한 필드는 일련번호 및 배치로 추적되는 품목에만 표시됩니다.

1. 해당 위치의 품목 재고(피킹 방법) 양식을 엽니다.
2. **유통기한**을 켭니다("이 품목의 배치 또는 일련번호가 만료되는 시기를 추적합니다.").
3. 모드 카드를 선택합니다. **고정 보존 기간**, **자재로부터 상속**, **입고 시 입력됨**.
4. 고정 보존 기간의 경우 **보존 기간 (일)**을 입력합니다. 회사의 기본 유통기한 일수로 미리 채워져 있습니다.
5. 제조 품목의 경우 필요하면 **보존 기간 시작 공법**을 선택하고 **유효기한 시작** 타이밍을 선택하며, 필요하면 **BOM에서 계산**을 켭니다.
6. **저장**을 선택합니다.

정책 변경은 폼의 작업 메뉴에서 볼 수 있는 품목의 **유통기한 이력**에 보관됩니다.

FieldType

<details>
  <summary>**모드**</summary>

  *고정 기간*, *계산* 또는 *입고 시 설정*. *(적용 대상: 전체)*
</details>

<details>
  <summary>**일수**</summary>

  시작 이벤트에 더해지는 유통기한 길이이며 최소 1. *(적용 대상: 고정 기간)*
</details>

<details>
  <summary>**트리거 프로세스**</summary>

  시계를 시작하는 공정작업이며 비워 두면 모든 공정작업입니다. *(적용 대상: 고정 기간, 제조 품목)*
</details>

<details>
  <summary>**타이밍**</summary>

  시계가 해당 프로세스 **이전** 또는 **이후**에 시작하는지입니다. 양식에서는 *프로세스 시작 시 유효기한 시작* 또는 *프로세스 종료 시 유효기한 시작*. *(적용 대상: 고정 기간, 제조 품목)*
</details>

<details>
  <summary>**BOM에서 계산**</summary>

  날짜를 소비된 구성품 중 가장 이른 만료일로도 제한하여 산출물이 원자재보다 오래 존속하지 않게 합니다. 만료일이 있는 투입물이 없으면 고정 기간으로 되돌아갑니다. *(적용 대상: 고정 기간, 제조 품목)*
</details>

NOTE

**날짜는 한 번만 기록됩니다**

Alforse는 추적 대상에 만료일이 없는 경우에만 만료일을 기록하며 기존 날짜를 조용히 덮어쓰지 않습니다. 날짜를 변경하려면 수동 재정의를 사용하며, 이때 대상의 이력에 보관되는 **사유**가 필요합니다.

## 회사 설정

회사 전체 규칙은 **설정 → 재고**의 **추적성** 아래 **보존 기간** 카드에 있습니다.

FieldType

<details>
  <summary>**유통기한 N일 전에 경고**</summary>

  추적 대상 목록의 노란색 "곧 만료" 배지의 사전 기간입니다. 배지를 끄려면 비워 두십시오.
</details>

<details>
  <summary>**기본 유통기한 기간(일)**</summary>

  품목을 고정 기간으로 설정했을 때 \*\*보존 기간 (일)\*\*에 미리 채워지는 값입니다. 기본값은 7입니다.
</details>

<details>
  <summary>**계산된 완제품 유효기한**</summary>

  계산된 투입 범위: **BOM에서 계산**(`AllInputs`, 기본값) 또는 **하위 조립품 유효기한만**(`ManagedInputsOnly`).
</details>

<details>
  <summary>**만료된 재고가 사용될 때**</summary>

  만료된 대상 정책: *Warn*, *Block* 또는 *BlockWithOverride*(아래 참조).
</details>

## 만료된 재고에 일어나는 일

만료된 대상 정책은 모든 자재 출고와 재고 이동에 적용됩니다.

| 정책 | 설정의 라벨 | 재고가 만료일을 지났을 때의 효과 |
| - | - | - |
| Warn | **경고 후 허용** | 경고와 함께 허용됩니다. |
| Block | **오류로 차단** | 거부됩니다. 작업자는 다른 배치 또는 일련번호를 선택해야 합니다. *(기본값)* |
| BlockWithOverride | **차단, 재정의 허용** | 사용자가 재정의 사유를 입력하지 않는 한 거부됩니다. 재정의에는 `inventory:update` 권한이 필요합니다. |

HEADS UP

**만료는 강제됩니다**

기본 **Block** 정책에서는 만료된 배치를 소비하거나 이동하려는 모든 시도가 *"Cannot consume expired tracked entit(y/ies)"*(만료된 추적 대상을 소비할 수 없습니다)로 중단됩니다. Alforse는 재고가 소비되거나 이동되는 모든 지점, 즉 자재 출고, 재고 이동, 설비 보전 작업에서 검사합니다. 현장의 작업자와 사무실의 계획 담당자 모두 같은 규칙을 만납니다.

### 피킹 순서와 만료 임박 경고

피킹은 **FEFO**를 인식합니다. 추적 대상은 만료일이 가장 이른 순서로 제안되므로 기본적으로 가장 오래된 재고가 먼저 나갑니다. 피킹 방법의 **피킹 순서**로 품목별로 **FEFO**, **FIFO** 또는 **LIFO**로 변경할 수 있으며, **기본값**은 가장 빠른 만료일 순, 그다음 가장 오래된 순으로 정렬합니다.

날짜가 임박한 배치는 **유통기한 N일 전에 경고**에 설정한 사전 기간에 따라 추적 대상 목록에 만료 임박 배지가 표시됩니다.

## 날짜 정정

추적 대상의 만료일 편집 작업(**유통기한 편집**)으로 새 날짜를 설정합니다. 사유가 필요하며 대상의 이력에 기록됩니다. 현재 재고만 정정을 받을 수 있습니다. **소진됨** 대상의 날짜는 이력이므로 기록된 그대로 유지됩니다.

## 각 설정이 있는 곳

| 설정 | 위치 |
| - | - |
| 품목별 정책(모드, 일수, 트리거 프로세스, 타이밍) | 품목의 **피킹 방법**, 유통기한 필드 아래. |
| 만료된 대상 정책, 만료 임박 일수, 기본 일수, 계산된 투입 범위 | **설정 → 재고**, **보존 기간** 카드. |
| 일회성 날짜 정정 | 추적 대상의 만료일 편집 작업(사유 필수). |

## 문제 해결

| 증상 | 원인 | 해결 방법 |
| - | - | - |
| 출고 또는 이동 시 *"Cannot consume expired tracked entity"* | 정책이 **Block**이고 배치가 만료일을 지났습니다. | 만료되지 않은 로트를 선택하거나, 사유와 함께 날짜를 정정하거나, **만료된 재고가 사용될 때**를 변경하십시오. |
| *"Cannot post shipment with expired batch"* | 출하 라인이 만료된 배치를 할당합니다. | 다른 배치를 할당하거나, 날짜를 수정하거나, 규칙을 Warn으로 완화하십시오. |
| 피킹 방법에 유통기한 필드가 없음 | 품목이 일련번호 또는 배치로 추적되지 않습니다. | 품목이 만료되어야 한다면 추적 유형을 변경하십시오. |
| *"No BOM input has a shelf-life policy"* | 날짜가 있는 투입물이 없는 계산 모드(또는 BOM에서 계산)입니다. | 구성품에 유통기한 정책을 부여하거나, BOM 제한 없이 고정 기간을 사용하십시오. |

## 관련 문서

**추적성**

날짜가 있는 로트 또는 일련번호를 입고, 작업, 출하를 거쳐 추적합니다.

[Open](https://docs.alforse.com/ko/docs/reference/traceability.md)

**재고**

재고가 있는 곳과 재고 이동이 기록되는 방식입니다.

[Open](https://docs.alforse.com/ko/docs/reference/inventory.md)

**품목**

품목이 유통기한 대상이 되도록 하는 추적 유형을 설정합니다.

[Open](https://docs.alforse.com/ko/docs/reference/items.md)

**보관 규칙**

날짜 대신 규칙으로 재고 이동을 제어합니다.

[Open](https://docs.alforse.com/ko/docs/reference/storage-rules.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.