前回、Power AutomateのBCコネクタのテンプレートを使用して得意先マスタの承認フローを作成しました。その際、Block処理が足りない、と書きましたが実はブロック処理が微妙に掛かっているので補足します。
「微妙に」と書いたのは、転記不可だけど制御が難しい、という意味です。(本当に微妙です。。)
まずはテンプレートからクラウドフローを作成します。環境名、会社名、APIカテゴリ、承認ユーザーのみ設定変更し、ほかの項目(特に”Blocked”項目)は変更しません。
前回はここでアクションを挿入しましたが、今回は挿入しません。すべての設定が完了したらクラウドフローを保存します。
得意先マスタのRequest ApprovalタブからSend Approval Requestボタンを押して承認依頼します。
このように” Send Approval Request”ボタンが非活性になっていればOKです。
クラウドフローの実行状況を確認します。承認待ちの状態です。
ここで、承認処理を行わずに、Sales Invoice(売上請求)を新規作成します。
適当に何か品目と数量を入力してPostします。
すると転記できません。つまり前回書いたようにクラウドフロー側でBlock処理を行わなくても転記禁止になっています。では、この裏で何が起きているのかを解析します。まずメッセージにはRestriction(制限)が課されていること、それがMS-CUSTAW-WH-01というワークフローによって処理された、と書かれています。
Restrictionについては、検索メニューからRestriction Recordsを検索して確認することができます。
このように MS-CUSTAW-WH-01というワークフローによって Restriction(制限)が課されていることが確認できます。
ワークフロー MS-CUSTAW-WH-01 も確認しましょう。検索メニューからWorkflowの一覧画面を呼び出して実行します。Customer Approval Workflowがありますのでクリックして開きます。
すると、ワークフローのコードが確認できます。MS-CUSTAW-WH-01とあります。これですね。明細行の一番上(Approval of a customer is requestedの行)のResponseに (+)Add record restriction とあります。これをクリックします。
ここで承認要求された得意先に対してRestrict Recordを 発行しています。
ワークフローのインスタンスも見てみましょう。
このようにRestriction処理のインスタンスができています。
右側にスクロールするとCustomer 30000に対してのRestrictionだと確認できます。
転記可能にするには (当然ですが)承認すればよいです。Power Automate側で承認します。
Restriction Recordsの一覧画面をF5でリフレッシュするとRestriction Recordがなくなっています。
Sales Invoiceを転記してみましょう。
先ほどはエラーになりましたが、、
今回は転記できました。
このように、テンプレートのワークフローを使うと、承認しない限り転記禁止にすることができます。ですが、、若干分かりにくいなぁ、、という印象です。(理由は最後に書きます)
ちなみに、Rejectした場合の挙動については少し注意が必要です。
改めて得意先マスタでSend Approval Requestボタンを押して承認依頼します。
制限レコードが作成されました。
ここでRejectします。
すると、制限レコードは消えません。
これは、クラウドフローでRejectされた場合にBC側のワークフローでRestrict Recordの削除処理を行っていないためです。ワークフローのインスタンスも残ったままです。
承認依頼された状態と変わっていません。
なので、Sales Invoiceを転記しようとすると、、
エラーになります。これはこれで「承認されていないから転記できない」は筋が通っている気がしますが、、
クラウドフローは却下で完了しているのに、BC側のワークフローは残ったままです。これ、自分で「Cancel Approval Request」を押してキャンセルする必要があります。ちょっとイケてないですね。。
キャンセルしたらRestrict Recordは消えます。(一覧画面上でF5でリフレッシュして確認)
転記も可能になります。
転記できました。
申請を取り消したら転記可能になるのも微妙なところですが、、まあそもそも承認依頼しなければ最初から転記できる仕様なので、「得意先マスタを新規作成した時点で転記できないようにする」という処理を組み込まない限り根本的な解決にはならないですね。
その点を差し引いたとしても、このテンプレートだとクラウドフロー側の処理とBCのワークフロー側の処理が分かれていて、理解しづらいように思います。途中でコメントしましたが、クラウドフローが却下で完了しているのにBCのワークフローが終わっていなくて手動キャンセルが必要なのも微妙な仕様です。そして何より、Restricted Recordがユーザーには見えにくいのが問題です。やはり、明示的に「Blocked」項目を使う方が分かりやすいと思います。
ということで、次回はレコードを作成した瞬間にBlockedを設定するクラウドフローを作成したいと思います。