Glovia Order Management (on Salesforce) を使ってみようか (4)
"Glovia Order Management (on Salesforce) を使ってみようか" も、ジョジョ徐々にシリーズ化されつつある今日この頃ですが、そんなに期待しないで頂きたいッ!(キリッ?
※あくまで、気になった小ネタを適当に出してるだけです。。
んで、本日のネタはこんなあたりで。 ↓
受注管理の範囲では、在庫引当をどうやってんの?
gOMでの「在庫予約」って...?
「在庫引当」というのは、お店で「売約済」とか札が商品に貼られているシーンを目にした方も多いと思いますが、アレです。お客さんからの注文に対して、出荷するための商品を確保する・・といったあたりでしょうか。
それをgOMではどうやってやっているか??というと「在庫予約」オブジェクトを使って実現しています。(こんな画面のヤツです↓ )
この「在庫予約」オブジェクト、在庫引当の後に続く業務(出庫/梱包/出荷..)でも関わってくるので、gOMでは結構大事なオブジェクトです。むやみに削除したりすると面倒ですし、むやみに削除できないようロックされています。
在庫予約データはいつ、どんな感じに作成されるのか...?
gOMでは、販売オーダーラインを作成するときに、在庫予約を一緒に作成します。
つまり、お客さんからの注文明細を登録するときに、自動的に在庫を引き当てにいってる、ということです。
現状、在庫引当のタイミングを制御したい場合は..カスタマイズするしかないみたいです。まぁ、自動的に在庫引当しても大半は大丈夫だと思います。
在庫切れになった商品を発注して、受入(「受領」という表現を使う企業もありますね)した後に在庫引当するタイミングで、微妙だと思うこともありますが、それは購買オーダーのときにでも紹介できれば、と思います。。。
在庫予約がどんな感じに作成されるのー?? というのが以下のパターンとなります。
- 商品が「非在庫品」の場合
- パターン「A」
- 商品が「在庫品」で、注文数<在庫数の場合
- パターン「B」
- 商品が「在庫品」で、注文数>在庫数>0の場合
- パターン「C」
- 商品が「在庫品」で、注文数>在庫数=0の場合
- パターン「D」
パターン | A | B | C | D | |
---|---|---|---|---|---|
作成データ件数 | 1 | 1 | 2 | 1 | |
在庫品or非在庫品? | 非在庫品 | 在庫品 | 在庫品 | 在庫品 | 在庫品 |
予約ステータス | 予約済 | 予約済 | 予約済 | 受注残 | 受注残 |
予約数 | 0 | (注文数) | (在庫数) | 0 | 0 |
受注残数 | 0 | 0 | 0 | (注文数-在庫数) | (注文数) |
非在庫品数 | (注文数) | 0 | 0 | 0 | 0 |
- 補足
- 商品が "在庫品" or "非在庫品" の判定は、「商品関連情報」オブジェクトの「非在庫品」項目で判定します。
- "受注残":在庫引当できなかった、というステータスを意味します。在庫が補充された後に、再度在庫引当する必要があります。
これを見ると
- 商品が「非在庫品」(≒在庫管理しない)ものでも在庫予約は作成します。
- gOMでは在庫引当する時点で、在庫として存在している分から確保していく、という方針のようです。
- 倉庫にある分から、販売オーダーラインを登録した順番でどんどん在庫引当しちゃえー!んで、在庫引当できなかったら受注残として別途作成しちゃえー・・という感じでしょうか。
- なので、注文に対して不足があると、在庫予約を2件作成しちゃいます。在庫引当後、出庫指示〜梱包指示〜出荷指示は、在庫予約の単位で処理されるので、注文としては明細が1件でも、出荷時には2件の明細に分かれる、というケースも発生します。(2つの出荷明細の数を足し合わせたら、注文数に等しくなりますが)
- 分割されるのがイヤだ!という場合には、一旦作っちゃった後に、分割された在庫予約を2件とも削除して下さい。そして、在庫が補充されて「注文数<在庫数」となった段階で、在庫引当処理を実行する・・という流れになります。
(赤枠のボタンが該当します↓ )
なお、補足ですが、「受注残」として残った在庫予約データについては、在庫が補充されたタイミングで、受注残を消し込む業務が必要となります。(でないと、後続業務(出庫/梱包/出荷)が回らなくなります)
受注残を消し込む操作は、以下の赤枠のボタンが該当します。在庫予約のリストから、消し込みたい在庫予約を選択して、「受注残消し込み」を実行する感じとなります。
在庫引当を自前のApexコードから起動させたい場合って...?
さてさて、色々とカスタマイズしていく中で、在庫を引き当てるとか、「受注残」として残っている在庫予約に対して、消し込みするといった処理を実装することも(もしかしたら)あるやもしれませぬ。
ということで、調べてみると、gOMの中で「inventoryReserve」クラスがglobalとして定義されていて、以下のようなメソッドを用意しているとのことでした。
- 在庫引当処理を実行する:gii.inventoryReserve.reservation(List
SalesOrderLineIds) - 販売オーダーラインのIdのリストを引数にして、gii.inventoryReserve.reservation を呼び出します。
- 例えば、在庫引当のタイミングを制御したい場合に、一旦在庫予約は削除しておいて、好きなときに上記のメソッドを呼び出せば、在庫引当のタイミングを制御できるようになるかと思います。
- 受注残の消し込み処理を実行する:gii.inventoryReserve.clearBackorder(List
InventoryReserveIds) - 在庫予約のIdのリストを引数にして、gii.inventoryReserve.clearBackorder を呼び出します。
- 例えば、在庫が補充されたタイミングで、「受注残」として残っている在庫予約データを自動で消し込みしたい場合に、上記のメソッドは利用できるかもしれません。。
※上記以外にも在庫予約データを処理するためのメソッドが用意されていますが、そのうち...(紹介できるといーなーと思いつつ)
次回は未定です。