|
フォーム
|
フォームリンク名
|
項目名
|
項目リンク名
|
項目タイプ
|
|
仕入先
|
仕入先
|
販売者名
|
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
|
サブフォーム
|
3. [新しいアクションを追加]をクリックし、 Delugeエディターで次のDelugeスニペットを保存して、顧客が別の商品をリクエストした場合に必要な商品の数を計算します。
- //現在のサブフォーム行の「必要な商品の数」フィールドの値を 0 に設定
- row。Number_Of_Items_Needed=0;
- //サブフォームの「商品名」フィールドに基づいて、対応する商品データを取得
- 商品 = 商品[ID == row。商品];
- //顧客が「数量」フィールドに入力した値と、選択された商品の在庫数を比較し、リクエストされた数量が在庫数を上回る場合に必要な商品の数を計算
- if(row。数量 > 商品。在庫)
- {
- //数量を利用可能な在庫数にリセットすることを通知
- 注意 '申し訳ありません。在庫は ' + 商品。在庫 + ' 個のみです。現在、この数量をカートに追加します。在庫が仕入先から入荷しましたらお知らせします。';
- row。Number_Of_Items_Needed=row。数量 - 商品。在庫;
- row。数量=商品。在庫;
- }
- //新しい合計値を再計算
- row。Sub_Total=row。数量 * row。単価;
4.
別のワークフローを作成 し、注文フォームにデータが追加されたとき(フォーム送信が成功したとき)に実行されるように設定します。
5. 新しいアクションを追加 をクリックし、以下の Deluge スニペットを Deluge エディターに保存して、商品の数に応じてステークホルダー、仕入先、顧客に通知します。
わかりやすくするため、Deluge コードはスニペットに分割されています。各スニペットについて説明したうえで、Deluge エディターに挿入できるように適切な順序に並べ替えます。
以下のスニペットを 1 つの動作するスクリプトにまとめたファイルについては、添付ファイルを確認してください。
スニペット a
顧客への通知は、 必要な商品の数 フィールドの値に基づいて行われます。このフィールドの値に基づいて処理を分析します。値が 0 以外の場合、 在庫補充リクエストあり顧客 フォームに、 必要な商品の数 の値とともにデータが追加されます。
- //在庫補充をリクエストした顧客の詳細を追跡
- //同じ顧客と商品で既にリクエストが存在するかを確認
- customers_with_restock_request = Customers_With_Restock_Request[商品 == 商品。ID && 顧客 == input。顧客 && Mailed == 無効].件数();
- if(customers_with_restock_request > 0)
- {
- //以前にリクエストを送信した顧客
- customers_with_restock_request = Customers_With_Restock_Request[商品 == 商品。ID && 顧客 == input。顧客 && Mailed == 無効];
- customers_with_restock_request。Number_Of_Items_needed=customers_with_restock_request。Number_Of_Items_needed - row。Number_Of_Items_Needed;
- }
- else
- {
- //在庫補充リクエストを持つ新しい顧客
- insert into Customers_With_Restock_Request
- [
- Added_User=Zoho。loginuser
- 顧客=input。顧客
- Mailed=無効
- Number_Of_Items_needed=row。Number_Of_Items_Needed
- 商品=row。商品
- }
スニペット b
販売者 には、この内容が強調されたメールが送信され、対応する 在庫 フィールドの値は、その 商品 レコードで 0 に設定されます。
- //販売者にメールを送信
- sendmail
- [
- 差出人 :Zoho。adminuserid
- to :販売者。メール
- 件名 :'在庫切れのお知らせ'
- メッセージ :'<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>'
- ]
- //該当する商品の在庫項目を 0 に設定
- 商品。在庫=0;
Snippet c
顧客からの依頼数が商品の在庫値を大きく下回る場合は、その行を追加し、在庫値を更新します。また、在庫がしきい値(例:50 個)を下回った場合には、事前に販売者へメールを送信します。
- //新しい在庫数を計算
- 商品。在庫=商品。在庫 - row。数量;
- //在庫数が 50 未満になったら仕入先にメール送信
- if(商品。在庫 <= 50)
- {
- sendmail
- [
- 差出人 :Zoho。adminuserid
- to :販売者。メール
- 件名 :商品。Product_Name + ' の在庫が少なくなっています'
- メッセージ :'<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>'
- ]
- }
Snippet d
ここでは、Snippet a、Snippet b、Snippet c を組み合わせます。これらのスニペットは、サブフォームに追加された行の合計数分だけ ループ処理 する必要があります。商品および販売者データは、サブフォーム行で選択された値に基づいて 取得 されます。
- //現在のデータのサブフォームを変数に代入
- subform = input。Inline_Subform;
- for each row in subform
- {
- //該当する商品を取得
- 商品 = 商品[ID == row。商品];
- //販売者を取得
- 販売者 = 商品。販売者;
- if(row。Number_Of_Items_Needed > 0)
- {
- //Snippet a と b を挿入
- }
- else
- {
- //Snippet c を挿入
- }
- }
6. 商品 フォーム に対して、商品データが編集され、フォーム送信が正常に完了したときに実行されるワークフローを作成します。
7. 新しいアクションを追加 をクリックし、在庫項目が正常に更新された際に顧客へ適切なメールを送信できるよう、以下の Deluge スニペットを Deluge エディターに保存します。
- //顧客に送信するメールの件名とメッセージを設定
- 件名 = '';
- メッセージ = '';
- if(input。在庫 > 0)
- {
- //この条件により、再入荷された商品のみメール送信されるようにする
- //その商品をリクエストした顧客にのみメール送信する
- for each 顧客 in Customers_With_Restock_Request[商品 == input。ID && Mailed == 無効]
- {
- //顧客の再入荷リクエスト数が更新後の在庫数以下かを確認し、それに応じてメール送信する
- if(顧客。Number_Of_Items_needed <= input。在庫)
- {
- 件名 = input。Product_Name + ' is now re-Stocked!';
- メッセージ = '<div>Hello<br></div><div><br></div><div>' + input。Product_Name + ' is now restocked with ' + input。在庫 + ' 商品. 順番 now!</div>';
- //スパム送信を防ぐため、メール送信済みとしてマークする
- 顧客。Mailed=真;
- }
- else
- {
- //再入荷された商品の数が、顧客がリクエストした数より少ない場合にメール送信する
- 件名 = input。Product_Name + ' is re-Stocked, but...';
- メッセージ = '<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>';
- }
- sendmail
- [
- 差出人 :Zoho。adminuserid
- to :顧客。顧客。メール
- 件名 :件名
- メッセージ :メッセージ
- ]
- //顧客には再度メールを送信する必要があるため、Mailed は更新後と一致しない
- }
- }
動作を確認する