> ## 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.

# 保管ルール

> 在庫や現場の取引が転記される際に Alforse が確認する条件です。エラーで取引をブロックするか、警告を出してユーザーが確認して続行できるようにします。

**保管ルール**は、在庫と現場の取引に対して会社が定義するチェックです。在庫や品質のマネージャーは、在庫が誤った種類のロケーションに格納される、番号なしでロットが転記されるといったミスを、発生した時点で止めるために使います。

## ルールのしくみ

ルールは転記中に確認されます。ルールの条件が満たされない場合、次のいずれかが起きます。取引を**ブロック**する、または**警告**してユーザーに確認して続行させる。すべてのルールは、**アイテム**または**作業区**のどちらか 1 種類の対象に向けられます。

NOTE

ルールは読み取り専用のチェックです。値を変更したり、既定値を与えたり、価格を算出したりすることはなく、出力は重大度付きのメッセージだけです。

### 例: 化学薬品を低温保管にする

バッチ管理の化学薬品を、常温のビンに決して入れてはならないとします。次のように設定したルールがこれを強制します。

| 設定 | 値 |
| - | - |
| 対象 | **アイテム**。化学薬品のアイテムグループで絞り込み |
| サーフェス | **入荷**と**配置**（place） |
| 条件 | `storageUnit.storageTypeId` が低温保管タイプと `eq` |
| 重大度 | **エラー** |
| メッセージ | `{item.id} must be stored in cold storage` |

化学薬品を別のタイプの保管ユニットに入荷すると失敗し、ユーザーにはアイテムの ID が入ったそのメッセージが表示されます。

## 条件

ルールが適用するテストは、小さな**条件ツリー**です。一致の種類と、1 つ以上の行で構成され、各行がフィールド、演算子、値を指定します。

| 要素 | オプション |
| - | - |
| **一致の種類** | `all`: すべての行が成立する必要があります。`any`: 1 つの行が成立すれば十分です。`none`: どの行も成立してはいけません。 |
| **フィールド** | 固定のリストから選びます。アイテムの情報: `item.type`、`item.replenishmentSystem`、`item.itemTrackingType`、カスタムフィールド。保管場所: `storageUnit.storageTypeId` と `storageUnit.locationId`。さらに作業区の情報と、明細の `transaction.quantity`。 |
| **演算子** | 下の表を参照してください。 |

条件が成立する場合、ルールは*合格*です。成立しない場合は、違反を発生させます。

### 演算子

| 演算子 | 意味 |
| - | - |
| `eq` / `neq` | フィールドが値と等しい／等しくない |
| `in` / `notIn` | フィールドの値がリストに含まれる／含まれない |
| `gt` / `lt` | フィールドが値より大きい／小さい |
| `isSet` / `isNotSet` | フィールドに値がある／ない |

### 欠損値

NOTE

条件のフィールドが**空**の場合、条件は失敗し、違反は *"…is required"*（… は必須です）と表示されます。例外は、空であることをテストするための `isSet` と `isNotSet` だけです。実際には、これにより、あらゆるルールが存在確認も兼ねることになります。たとえば、出荷が転記される前にロット番号を必須とするなどです。

### メッセージ

**メッセージ**に `{item.id}` や `{transaction.quantity}` といったトークンを入れると、失敗した明細の値に置き換えられるため、ユーザーはどの明細がルールに違反したかを正確に把握できます。

## ルールが実行される場所

各ルールは、守る**サーフェス**を指定します。サーフェスとは、取引の種類です。対象によって、選べるサーフェスが決まります。

* **アイテムのルール**は、`receipt`、`shipment`、`stockTransfer`、`warehouseTransfer`、`inventoryAdjustment`、およびビンの移動 `place` と `pick` で実行できます。
* **作業区のルール**は、`operationStart`、`operationFinish`、`materialIssue`、`materialReceive` で実行できます。

評価は、転記中にサーバー上で、会計エントリや在庫移動より前に行われます。そのため、ブロックされた取引は痕跡を残さず、何も書き込まれません。

## ブロックか警告か

| 重大度 | 効果 |
| - | - |
| `error` | データがルールを満たすまで、取引は転記できません。 |
| `warn` | メッセージが表示され、ユーザーは**確認して続行**できます。 |

NOTE

`error` には回避する方法がありません。`warn` が取引を止めるのは、ユーザーが確認するまでで、その後は同じ送信が転記されます。警告は、現場を止めずにケースにフラグを立てたい「よろしいですか？」の確認に適しています。

**在庫調整**に対して、条件が `transaction.quantity` `gt` `750`、メッセージが `Large adjustment — confirm the count` の `warn` ルールを考えます。異常に大きなカウントにはフラグが立ちますが、ユーザーが警告を確認すれば、すぐに転記されます。

## ルールが適用される明細

ルールがどの明細を確認するかを決める方法は 2 つあります。

| 方法 | しくみ |
| - | - |
| **フィルター** | アイテムのルールのみ。ルールを**アイテムタイプ**、**アイテムグループ**、またはその両方に絞り込み、OR（タイプまたはグループ）か AND（タイプかつグループ）で結合します。フィルターがなければ**すべての**アイテムが対象です。 |
| **割り当て** | アイテムの**ルール**タブから 1 つのアイテム、または 1 つの作業区にルールを固定します。作業区のルールは、代わりにすべての作業区に適用することもできます。 |

## ルールを作成する

1. **在庫 → 保管ルール**に移動し、**ルールを追加**を選択します。**新しいルール**フォームが開きます。
2. **名前**と、任意で**説明**を入力します。ルールが評価されるよう、**有効**はオンのままにします。
3. **重大度**を選びます。**エラー**は解決されるまで保存をブロックし、**警告**は確認して続行できます。
4. ルールのスコープを決めます。アイテムのルールでは、**アイテムタイプ**と**アイテムグループ**、および**絞り込みを組み合わせ**の方法を選びます。両方を空にすると、すべてのアイテムに一致します。作業区のルールでは、すべての作業区を対象にする場合は**すべての作業区に適用**をオンにします。
5. ルールを実行するサーフェスを選びます。
6. **条件**で、一致の種類を設定し、フィールド／演算子／値の行ごとに**条件を追加**を使います。
7. ルールが失敗したときにユーザーに表示するメッセージを書きます。**トークンを挿入**で、アイテム ID などの値を追加します。
8. **保存**を選択します。

すでにルールがありますか？ そのアイテムの**ルール**タブから、特定の 1 つのアイテムに添付します。

### ルールのフィールド

FieldType

<details>
  <summary>**名前**required</summary>

  一覧と割り当てでルールを識別します。最大 120 文字。
</details>

<details>
  <summary>**説明**</summary>

  ルールを保守する人のための任意の補足情報。
</details>

<details>
  <summary>**重大度**</summary>

  `error` はブロックし、`warn` は確認を求めてから続行します。
</details>

<details>
  <summary>**条件**</summary>

  一致の種類と、それが組み合わせるフィールド、演算子、値の行。
</details>

<details>
  <summary>**メッセージ**required</summary>

  違反時にユーザーが読む文面。最大 500 文字。`{token}` のプレースホルダーは、明細から入力されます。
</details>

<details>
  <summary>**サーフェス**</summary>

  少なくとも 1 つの取引タイプ。条件で使うすべてのフィールドが、選択した各サーフェスに存在する必要があります。
</details>

<details>
  <summary>**対象**</summary>

  `item` または `workCenter` のどちらか。
</details>

<details>
  <summary>**アイテムのフィルター**</summary>

  アイテムタイプ、アイテムグループ、またはその両方。空のままにすると、すべてのアイテムにルールが適用されます。
</details>

<details>
  <summary>**有効**</summary>

  オフの場合、ルールは保持されますが評価されません。
</details>

## プランと権限

HEADS UP

**Business** プランが必要です。それ以外のプランでは、保管ルールの画面にアップグレードの案内が表示され、Alforse はルールを評価しません。

**保管ルール**の一覧からルールを追加するには、設定の作成アクセスが必要です。

## 関連

**販売ルール**

同じ条件ビルダーを、在庫ではなく、見積、受注、売上請求書の明細に適用したものです。

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

**アイテム**

ルールが対象とするのは、アイテムであることが最も多く、タイプ別、グループ別、または 1 つずつです。

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

**在庫**

入荷、出荷、移動、ピック。これらのルールが守る取引です。

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

**作業区**

ルールは、工程の開始と終了、材料の払出しと受入も守れます。

[Open](https://docs.alforse.com/ja/docs/reference/work-centers.md)

**保存期間**

追跡対象の在庫に日付を付け、期限後にブロックする、もう 1 つの在庫のガードです。

[Open](https://docs.alforse.com/ja/docs/reference/shelf-life.md)


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