Dataverse仮想テーブルを使ったモデル駆動型アプリでD365BCの品目在庫数量を更新できるとことを説明します。
BC用の仮想テーブル設定とかモデル駆動型アプリの作成とかは前回、前々回の記事を参照してください。
前回の記事ではBCの品目マスタを管理するモデル駆動型アプリを作成しました。BCの品目マスタの項目のうち、仮想テーブルで操作可能な項目をすべて並べただけの単純なアプリです。ここにInventoryという項目が編集できるように見えます。(Inventoryは在庫数量を表す項目。)

BCの画面ではこの項目が該当します。現在の在庫数量は4個ということがわかります。この項目、BCではマスタ画面から更新できません。試しに数字の4をクリックすると、、

内訳が表示されます。これはItem Ledger Entriesといって、在庫受払の過去すべての履歴です。(そのうち、当該品目でフィルタしたもの。)BCで在庫数量は増減させるには別途存在するItem Journalという受払記録用の画面から転記する必要があります。上図の品目マスタカード画面で数字を直接打ち換えることはできません。

一方、モデル駆動型アプリでは在庫数量が更新可能に見えます。これ、更新できるのか?と思って試しに数量打ち変えて保存ボタンを押したら更新したらできました。(感覚的には、おいおい更新出来ちゃったよw、という感じです。)

BCの品目カードを見てみましょう。数量が24に更新されていますね。数字をクリックしましょう。

内訳が表示されました。明細が増えています。”Positive Adjustment”というEntry Typeで20個増ええています。

今度は減らしてみます。数量を減らして保存。

BCの画面でも在庫数量が減りました。

内訳を確認すると”Negative Adjustment”で在庫がマイナスされています。

他のマスタではどうでしょう?
仕入先カードを確認します。品目マスタの在庫数量に相当するのは、仕入先では債務残高でしょう。BCでは”Balance”という項目が該当します。この画面で数字は更新不可能です。数字をクリックすると、、

内訳が表示されます。この例では明細がありませんが、発注したり支払いしたりすると明細が表示されます。

モデル駆動型アプリを作成します。”Balance”という項目が表示されています。

品目マスタの時と同様に数字を打ち換えて保存すると、、

エラーになりました。。
“Balance”はRead-Onlyとのことです。

モデル駆動型アプリの編集画面で”Balance”がRead-Onlyか確認すると”Read-only”ではないですね。。おそらく、APIでRead-Onlyに設定されているのだと思われます。

得意先マスタはどうでしょう?
仕入先同様、”Balance”が存在します。債権残高です。売ったり入金されたりすると増減します。

ですが、モデル駆動型アプリを作ろうとすると、そもそも仮想テーブル上に”Balance”に該当する項目がありません。。(”Balance Due”は別の項目です。)得意先マスタのAPIはBalanceを持っていないためでしょう。

銀行マスタも確認します。ここも”Balance”を持っています。口座残高を表します。

銀行マスタも仮想テーブル上に”Balance”がありません。そもそも項目が5個しかないです。

ということで、いくつか確認した限りでは品目マスタだけが何故か参照項目(正確には補助元帳の数量項目を集計して表示しているフローフィールド)を更新できるようです。
品目マスタだけが更新可能な理由はわかりません。
1. 単にバグ
2. 得意先、仕入先もいずれは更新可能になる
どちらかわかりませんが、、調整明細をわざわざ生成してまで在庫数量増減させていることからバグではないような気がします。希望的観測も込めて、いずれは他のマスタでも実現可能になることを期待します。
まあ、仮に可能になったとしても、他の属性情報(場所とか、分析用項目とか)の入力なしに在庫数量を増減させるので業務的に使いどころは限られると思います。
次回は在庫数量を更新する仕組みの裏で動いているAPIをPower Automate側から見てみたいと思います。