【FileMaker】在庫引当を表示しよう

[前回の記事](https://qiita.com/tyuma/items/b6f7dbf97bbc4d7cd553)では、在庫引当のスクリプトを実装しました。

https://qiita.com/tyuma/items/b6f7dbf97bbc4d7cd553

今日は、在庫引当を表示するレイアウトについてです。

# 前提条件
[前回の記事](https://qiita.com/tyuma/items/b6f7dbf97bbc4d7cd553)を参考に、リレーションシップグラフを組んでおきます。
テーブルのフィールドを載せていなかったので、こちらで載せておきます。
実際に追加したのは、赤枠のフィールドになります。

## マスタテーブル

### 商品情報
![スクリーンショット 2024-12-08 16.40.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/1c2e50c9-0a9d-96b2-6818-03ad846f8b81.png)

### 顧客情報
顧客情報は、在庫引当表には直接関係しませんが、流れとして実装しました。
必須ではないです。
![スクリーンショット 2024-12-08 16.40.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/ab9e980e-5927-842d-fd59-33bce1c019fd.png)

## トランザクションテーブル

### 注文情報
![スクリーンショット 2024-12-08 16.40.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/c7e68e25-1a5f-5b15-f98c-dd71e26fc0da.png)

### 注文情報_明細
![スクリーンショット 2024-12-08 16.40.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/6d0d27c5-3eaf-78b6-59c6-50d8fa90212b.png)

ルックアップするフィールドは、注文情報_明細行で注文があった商品を追加する際の自動追加になります。
リレーションシップグラフを先に作成しておくのを忘れずに。
![スクリーンショット 2024-12-08 16.46.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/46c60358-6777-de0a-a303-f74a44d60c6d.png)

## 履歴情報

### 在庫履歴情報
在庫履歴情報は、ここでは在庫数を計上＝１レコードという設計にしています。
![スクリーンショット 2024-12-08 16.41.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/e7b6d962-817a-882b-5082-feb437e1e8b3.png)

:::note info
在庫履歴の持ち方として、在庫1個＝1レコードとするやり方もあります。
小規模で在庫数が少ない場合や在庫が一点ものの場合は在庫1個＝1レコードのやり方で、在庫を引き当てる（売れた）場合、売れた個数分だけ在庫レコードを引き当てる、というやり方になります。
このやり方は、在庫が多い場合はレコード数が爆発的に増えますが、引当を戻す（販売した商品が返品されたなど）場合、何個分の何個のレコードを戻す、などの処理が簡易的になる、という利点があります。


どちらでも在庫の引当ができますが、現場に応じて使い分けてみてください。
:::

# レイアウトの設計

## 注文管理画面
今回はサンプルなので、１画面に１注文という構成にしてあります。
レイアウトの表示は、「フォーム形式」です。
![スクリーンショット 2024-12-07 20.49.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/15625c7d-2fed-5486-c2aa-0badb5270f71.png)

:::note info
一覧と詳細に分けたい場合は、一覧の画面を追加すると使い勝手が良くなると思います。
:::

こういう画面ですが、
![スクリーンショット 2024-12-08 16.55.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/6531b5a4-d594-e71f-e616-805b9190b260.png)

色々重なってます。
![スクリーンショット 2024-12-08 16.56.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/7f26243d-383b-4c3f-5e82-16b26cd746b8.png)

今回は、在庫引き上げを表示するという趣旨なので、解説は軽くに留めておきます。

基本的には、注文情報の明細行に「引当」ボタンが実装されていれば、在庫引当が実行できます。
スクリプトの内容は、[前回の記事](https://qiita.com/tyuma/items/b6f7dbf97bbc4d7cd553)を参考にしてください。
![スクリーンショット 2024-12-08 16.57.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/8f8c15b2-ebae-7f6e-e6c6-9c69012e66e1.png)

リレーションシップグラフでは、下の赤枠部分のリレーションシップで実現しています。
![スクリーンショット 2024-12-07 22.05.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/639e59bf-158c-5fc6-05c5-843115398ae6.png)

## 在庫履歴管理

### スクリプト
こちらは、商品番号順で表示したいので、スクリプトをもう一つ作っています。
たった1行ですが、大事です。
![スクリーンショット 2024-12-08 17.06.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/37f4aecf-7e39-3dc1-03b7-28038f433a55.png)

作成したスクリプトは、在庫履歴管理のレイアウトのスクリプトトリガに設定します。
onLayoutEnterスクリプトトリガは、このレイアウトに遷移するとき、実行されます。
![スクリーンショット 2024-12-08 17.06.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/fbff13c6-f32b-1298-ee8b-a7b39619c7ba.png)

### レイアウト

#### 一覧一つで実装する場合
在庫履歴管理は、一覧で実装しました。
こちらは、注文情報管理とは違い、レイアウトの表示は「リスト形式」で構成しています。
![スクリーンショット 2024-12-07 22.15.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/88a24ef2-2536-5712-b172-28d6d20f0730.png)

:::note info
運用的には、商品名一覧と在庫履歴の詳細の２レイアウトにした方が、取引が多くなって目的の商品の履歴が見つからない、ということがなくなると思います。
:::

このレイアウトのリレーションシップグラフでの構成は、以下になります。
レイアウトに表示するのに必要な、リレーションシップになります。
![スクリーンショット 2024-12-07 22.05.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/c782aadb-4c7c-6a52-134e-173179c0ef08.png)


リストでは、パートの設定で「商品番号」を小計ソート対象として追加しています。
これを設定し、ソートをかけることで、商品番号順にレコードが並んでくれるわけです。
![スクリーンショット 2024-12-08 17.13.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/eb5ffe57-66e8-6669-3a81-1e36df68ff19.png)

入出荷区分と在庫数表示では、条件付き書式を設定しています。
入荷は青、出荷は赤です。
![スクリーンショット 2024-12-08 17.13.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/87765bfa-41c6-5a2c-9e11-0ad450e8c933.png)
![スクリーンショット 2024-12-08 17.14.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/97569213-786c-800b-5a4f-1991b1bc7ea8.png)

## 在庫管理を一覧と詳細に分ける場合
おまけです。
先にお勧めした、一覧と詳細に分けて実装する方法です。

一覧は、小計行のみ、詳細は、集計行の履歴が表示されます。
![スクリーンショット 2024-12-08 17.47.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/f89e21e7-ca57-2a6d-f8b1-d0e05698c17e.png)

### 一覧
先に紹介した在庫履歴管理レイアウトを応用して、パート設定からボディ行を削除します。
詳細画面へ遷移するボタンを追加するのみです。
![スクリーンショット 2024-12-08 17.52.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/baab9e7d-22ae-4503-0eb9-8ba797f93bb2.png)

### 詳細
詳細画面は、一覧と逆で、パート設定から小計行を削除して実装します。
一覧へ戻るボタンも追加しましょう。
![スクリーンショット 2024-12-08 17.53.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/5495de32-b6b1-b0fa-ee39-5db39318d33a.png)

# まとめ
在庫引当のレイアウトは、現場ごとにバリエーションがあります。
現場で何を優先して表示すると仕事がスムーズにいくのか、というニーズをもとに、在庫関連の実装をしてみてくださいね。