今回紹介していくのは(簡易的に)在庫状況を可視化するレポートの作成方法です。
例えば、下記のような倉庫が3箇所存在し、商品も3種類存在するような場合に、どの倉庫にどの商品がどれだけあるのかを倉庫毎にグラフとして可視化することが目的となります。(あくまで簡易的に作成しますので、この記事を参考に状況に合わせてカスタマイズしていってください!

在庫管理のオブジェクトを作成する
まずは、上記のようなレポートを作成するために必要なオブジェクトを作成します。ここでは「在庫管理オブジェクト(Inventory_Control__c)」とします。このオブジェクトに「どの商品」が「どの倉庫」に「どれだけ」「入庫されたのか/発送されたのか」を入力していくことで在庫状況を管理していきます。
具体的には下記のような項目を用意してください。(在庫管理名は自動採番でもOK)

レポートの準備
作成するレポートの完成形は下記のようなレポートです。つまり、「発送を集計したレポート」と「入庫を集計したレポート」の2つのレポートの結合レポートです。

各々のレポートの「検索条件」と「アウトライン」は下記の通りです。
「入庫レポート」の検索条件には、「入庫」のレコードのみを抽出するように設定します。逆に「発送レポート」の検索条件には、「発送」のレコードのみを抽出するように設定します。

次は「アウトライン」です。項目は下記のように配置してください。

最後に「在庫数(現在)」の集計項目を作成します。発送の下矢印▼をクリックして「集計項目を追加」から作成することができます。

下記のように作成してください。

数式内の用語の説明です。
- 「B0」=入庫レポート
- 「B1」=発送レポート
- 「Inventory_Control__c」=在庫管理オブジェクトオブジェクトのAPI参照名
- 「Number_Pieces__c」=「個数」項目のAPI参照名
次に数式の内容について説明します。
B0#Inventory_Control__c.Number_Pieces__c:
これは「B0」というレポートの「Inventory_Control__c」オブジェクト(在庫管理オブジェクト)の「Number_Pieces__c(個数)」項目の合計(SUM)を表しています。
B1#Inventory_Control__c.Number_Pieces__c:
こちらも同様に、「B1」というレポートの「Inventory_Control__c」オブジェクト(在庫管理オブジェクト)の「Number_Pieces__c(個数)」項目の合計を表しています。
IF(ISNULL(B1#Inventory_Control__c.Number_Pieces__c), 0, B1#Inventory_Control__c.Number_Pieces__c):
この部分では、まず「B1」グループの「Number_Pieces__c」項目の合計が「NULL」(値がない状態)かどうかを確認します。
「NULL」の場合は「0」を返し、そうでない場合は実際の合計値を返します。
全体の計算内容:
- 数式は「B0」レポートの(入庫の個数)の合計値から、「B1」レポートの(発送の個数)の合計値を引いた結果を計算します。
- ただし、「B1」グループの合計値が「NULL」である場合は、「0」を引くことになります。
具体的な例:
B0 レポート(入庫の個数)の合計値が 100
で、 B1 レポート(発送の個数)の合計値が NULL
だった場合、結果は 100 - 0 = 100
となります。
B0 レポート(入庫の個数)の合計値が 100
で、 B1 レポート(発送の個数)の合計値が 50
だった場合、結果は 100 - 50 = 50
となります。
これで完成です。レポートのグラフを積み上げ棒グラフにしてちゃんと表示されているか確認してみてください。