在庫切れ状況を自動で関係者に通知する方法

在庫切れ状況を自動で関係者に通知する方法

お知らせ:当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の英語版を参照してください。

要件  

商品が在庫切れになったら販売者に自動メールを送信し、商品が希望数量どおりには用意できないことを顧客に通知します。商品が再入荷された際には、顧客に通知を送信します。

使用例  

ある受注・在庫管理アプリケーションには、4 つのフォームがあります。 法人に商品を供給する仕入先を管理する 仕入先 フォーム、 法人を利用する顧客の詳細を保持する 顧客 フォーム、 商品 フォーム(在庫データを保持)、 そして 注文 フォーム(注文を登録)があります。ここでは、手持ち在庫よりも多い数量で注文が登録されます。 ここで必要となるのは、次の内容です :
  • 利用可能な商品数量が注文数より少なく、その数量のみを出荷することを顧客に通知・案内する。
  • この在庫切れの状況について販売者に通知する。
  • 商品が再入荷された際に顧客へ通知する。
        動作を確認

手順   

1. フォームを作成 し、次の 詳細 を設定します:
フォーム  
フォームリンク名
項目名
項目リンク名
項目タイプ
仕入先
仕入先
販売者名
Vendor_Name
名前
販売者メール
Vendor_Email
メール
顧客
顧客
顧客名
Customer_Name
名前
メール
Customer_Email
メール
住所
住所
住所
商品
商品
商品名
Product_Name
単一行
在庫
在庫
数値
販売者
販売者
ルックアップ(販売者)
在庫補充依頼あり顧客
Customers_With_Restock_Request
顧客名
顧客
ルックアップ(顧客)
商品名
商品
ルックアップ(商品)
送信済み
送信済み
判定ボックス
必要な商品の数
Number_Of_Items_needed
数値
注文
注文
 
顧客名
顧客
ルックアップ (顧客)
注文詳細
  • 商品名
  • 数量
  • 必要な商品の数
Order_Details
  • Product_Name
  • 数量
  • Number_of_Items_Needed
サブフォーム
  • ルックアップ(商品)
  • 数値
  • 数値

2. フォームワークフローを作成 し、顧客が注文フォームのサブフォーム内の 数量項目を更新するたびに実行されるように設定します。

 
3. [新しいアクションを追加]をクリックし、 Delugeエディターで次のDelugeスニペットを保存して、顧客が別の商品をリクエストした場合に必要な商品の数を計算します。
  1. //現在のサブフォーム行の「必要な商品の数」フィールドの値を 0 に設定
  2. row。Number_Of_Items_Needed=0;
  3. //サブフォームの「商品名」フィールドに基づいて、対応する商品データを取得
  4. 商品 = 商品[ID == row。商品];
  5. //顧客が「数量」フィールドに入力した値と、選択された商品の在庫数を比較し、リクエストされた数量が在庫数を上回る場合に必要な商品の数を計算
  6. if(row。数量 > 商品。在庫)
  7. {
  8. //数量を利用可能な在庫数にリセットすることを通知
  9. 注意 '申し訳ありません。在庫は ' + 商品。在庫 + ' 個のみです。現在、この数量をカートに追加します。在庫が仕入先から入荷しましたらお知らせします。';
  10. row。Number_Of_Items_Needed=row。数量 - 商品。在庫;
  11. row。数量=商品。在庫;
  12. }
  13. //新しい合計値を再計算
  14. row。Sub_Total=row。数量 * row。単価;
4. 別のワークフローを作成  し、注文フォームにデータが追加されたとき(フォーム送信が成功したとき)に実行されるように設定します。
 
5. 新しいアクションを追加 をクリックし、以下の Deluge スニペットを Deluge エディターに保存して、商品の数に応じてステークホルダー、仕入先、顧客に通知します。                  
わかりやすくするため、Deluge コードはスニペットに分割されています。各スニペットについて説明したうえで、Deluge エディターに挿入できるように適切な順序に並べ替えます。
以下のスニペットを 1 つの動作するスクリプトにまとめたファイルについては、添付ファイルを確認してください。

スニペット a
 
顧客への通知は、 必要な商品の数 フィールドの値に基づいて行われます。このフィールドの値に基づいて処理を分析します。値が 0 以外の場合、 在庫補充リクエストあり顧客 フォームに、 必要な商品の数 の値とともにデータが追加されます。
  1. //在庫補充をリクエストした顧客の詳細を追跡
  2. //同じ顧客と商品で既にリクエストが存在するかを確認
  3. customers_with_restock_request = Customers_With_Restock_Request[商品 == 商品。ID && 顧客 == input。顧客 && Mailed == 無効].件数();
  4. if(customers_with_restock_request > 0)
  5. {
  6. //以前にリクエストを送信した顧客
  7. customers_with_restock_request = Customers_With_Restock_Request[商品 == 商品。ID && 顧客 == input。顧客 && Mailed == 無効];
  8. customers_with_restock_request。Number_Of_Items_needed=customers_with_restock_request。Number_Of_Items_needed - row。Number_Of_Items_Needed;
  9. }
  10. else
  11. {
  12. //在庫補充リクエストを持つ新しい顧客
  13. insert into Customers_With_Restock_Request
  14. [
  15. Added_User=Zoho。loginuser
  16. 顧客=input。顧客
  17. Mailed=無効
  18. Number_Of_Items_needed=row。Number_Of_Items_Needed
  19. 商品=row。商品
  20. }

スニペット b
 
販売者 には、この内容が強調されたメールが送信され、対応する 在庫 フィールドの値は、その 商品 レコードで 0 に設定されます。
  1. //販売者にメールを送信
  2. sendmail
  3. [
  4. 差出人 :Zoho。adminuserid
  5. to :販売者。メール
  6. 件名 :'在庫切れのお知らせ'
  7. メッセージ :'<div><div>Hi, ' + 販売者。Vendor_Name + ',<br></div><div><br></div><div>弊社の商品「' + 商品。Product_Name + '」が、最近在庫切れとなりました。補充をお願いいたします。<br></div><div><br></div><div>よろしくお願いいたします。<br></div><div><br></div></div><div><br></div>'
  8. ]
  9. //該当する商品の在庫項目を 0 に設定
  10. 商品。在庫=0;

Snippet c
 
顧客からの依頼数が商品の在庫値を大きく下回る場合は、その行を追加し、在庫値を更新します。また、在庫がしきい値(例:50 個)を下回った場合には、事前に販売者へメールを送信します。
  1.   //新しい在庫数を計算
  2. 商品。在庫=商品。在庫 - row。数量;
  3. //在庫数が 50 未満になったら仕入先にメール送信
  4. if(商品。在庫 <= 50)
  5. {
  6. sendmail
  7. [
  8. 差出人 :Zoho。adminuserid
  9. to :販売者。メール
  10. 件名 :商品。Product_Name + ' の在庫が少なくなっています'
  11. メッセージ :'<div><div>Hi, ' + 販売者。Vendor_Name + ',<br></div><div><br></div><div>弊社の商品「' + 商品。Product_Name + '」へのご注文が最近非常に多く、在庫が少なくなっています。残り在庫は ' + 商品。在庫 + ' 個です。補充をお願いいたします。<br></div><div><br></div><div>よろしくお願いいたします。<br></div><div><br></div></div><div><br></div>'
  12. ]
  13. }
 
Snippet d
 
ここでは、Snippet a、Snippet b、Snippet c を組み合わせます。これらのスニペットは、サブフォームに追加された行の合計数分だけ ループ処理 する必要があります。商品および販売者データは、サブフォーム行で選択された値に基づいて 取得 されます。
  1. //現在のデータのサブフォームを変数に代入
  2. subform = input。Inline_Subform;
  3. for each row in subform
  4. {
  5. //該当する商品を取得
  6. 商品 = 商品[ID == row。商品];
  7. //販売者を取得
  8. 販売者 = 商品。販売者;
  9. if(row。Number_Of_Items_Needed > 0)
  10. {
  11.   //Snippet a と b を挿入
  12. }
  13. else
  14. {
  15. //Snippet c を挿入
  16. }
  17. }

6. 商品 フォーム に対して、商品データが編集され、フォーム送信が正常に完了したときに実行されるワークフローを作成します。  
 

7. 新しいアクションを追加 をクリックし、在庫項目が正常に更新された際に顧客へ適切なメールを送信できるよう、以下の Deluge スニペットを Deluge エディターに保存します。
  1.   //顧客に送信するメールの件名とメッセージを設定
  2. 件名 = '';
  3. メッセージ = '';
  4. if(input。在庫 > 0)
  5. {
  6. //この条件により、再入荷された商品のみメール送信されるようにする
  7. //その商品をリクエストした顧客にのみメール送信する
  8. for each 顧客 in Customers_With_Restock_Request[商品 == input。ID && Mailed == 無効]
  9. {
  10. //顧客の再入荷リクエスト数が更新後の在庫数以下かを確認し、それに応じてメール送信する
  11. if(顧客。Number_Of_Items_needed <= input。在庫)
  12. {
  13. 件名 = input。Product_Name + ' is now re-Stocked!';
  14. メッセージ = '<div>Hello<br></div><div><br></div><div>' + input。Product_Name + ' is now restocked with ' + input。在庫 + ' 商品. 順番 now!</div>';
  15.   //スパム送信を防ぐため、メール送信済みとしてマークする
  16. 顧客。Mailed=真;
  17. }
  18. else
  19. {
  20. //再入荷された商品の数が、顧客がリクエストした数より少ない場合にメール送信する
  21. 件名 = input。Product_Name + ' is re-Stocked, but...';
  22. メッセージ = '<div>Hello<br></div><div><br></div><div>' + input。Product_Name + ' is now restocked with ' + input。在庫 + ' 商品. We know you had asked for ' + 顧客。Number_Of_Items_needed + ' 商品. We were able to procure a lesser 番号. Sorry! We will 通知 when we 取得する the remaining 商品!</div>';
  23. }
  24. sendmail
  25. [
  26. 差出人 :Zoho。adminuserid
  27. to :顧客。顧客。メール
  28. 件名 :件名
  29. メッセージ :メッセージ
  30. ]
  31. //顧客には再度メールを送信する必要があるため、Mailed は更新後と一致しない
  32. }
  33. }

動作を確認する