営業成果 月間集計 20211026
リード案件の前月進捗が月初にメールで自動通知されるワークフローです。 商談化率、受注件数、担当者別売上金額等がリード管理プロセスから自動集計されます。集計結果は、毎月1日に指定のメールアドレスに送信されます。宛先を営業部員にすることで、前月の目標達成差異を確認できます。
作業担当者 (スイムレーンの数:1)
  • 営業部長
仕事の流れ (ワークフロー図の複雑度:11)
  • 2 1.集計開始(手動)
    • 営業部長が、前月の営業活動集計を開始する。
  • 7 前月リード集計 取得
    • ワークフロー基盤が、リード管理プロセスから前月のリードデータを収集する。
  • 8 前月受注集計 取得
    • ワークフロー基盤が、リード管理プロセスから前月受注データを収集する。
  • 5 前月案件化集計 取得
    • ワークフロー基盤が、リード管理プロセスから前月案件化データを収集する。
  • 12 営業活動結果 集計
    • ワークフロー基盤が、受注集計・案件化集計を行う。
  • 14 案件化率 算出
    • ワークフロー基盤が、案件化率(案件化件数/リード件数)を算出する。
受け渡しされるビジネスプロセス変数 (データ項目の数:16)
  • 受注:抽出対象件数 q_filtered_all_count_order 7
    • 受注件数(フィルタ全件)が格納されます。
  • 受注:リスト抽出件数 q_filtered_count_order 8
    • 受注件数(フィルタ500件)が格納されます。
  • 受注:抽出データ q_order_data 6
    • 受注データ(フィルタ500件)が格納されます。
  • 受注:受注額総計 q_total_amount_orders 11
    • 受注額の総計が格納されます。(受注データより算出)
  • 受注:担当者別集計(html) q_Individual_totalization_orders 12
    • 担当者ごとの受注件数・受注額が整形(HTML)され、格納されます。
  • 案件化:抽出対象件数 q_filtered_all_count_trial 1
    • 案件化件数(フィルタ全件)が格納されます。
  • 案件化:リスト抽出件数 q_filtered_count_trial 2
    • 案件化件数(フィルタ500件)が格納されます。
  • 案件化:抽出データ q_trial_data 0
    • 案件化データ(フィルタ500件)が格納されます。
  • 案件化:見込額総計 q_total_amount_trials 13
    • 案件見込み額の総計が格納されます。(案件データより算出)
  • 案件化率(%) q_to_trial_rate 15
    • 案件化率(案件化件数/リード件数)が格納されます。
  • 案件化:担当者別集計(html) q_Individual_totalization_trials 14
    • 担当者ごとの案件化件数・見込み額が整形(HTML)され、格納されます。
  • リード:抽出対象件数 q_filtered_all_count_lead 4
    • リード件数(フィルタ全件)が格納されます。
  • リード:リスト抽出件数 q_filtered_count_lead 5
    • リード件数(フィルタ500件)が格納されます。
  • リード:抽出データ q_lead_data 3
    • リードデータ(フィルタ500件)が格納されます。
  • 集計対象組織 q_target_group 9
    • 集計対象の組織が格納されます。
    • processInstanceInitQgroupId
  • 集計対象月 q_target_month 10
    • 集計月(YYYY-MM)が格納されます。
    • processInstanceStartDatetime.addMonths(-1)

フィールド名, Num, 初期値

Download

This archive contains the BPMN icon, which is only available in the Professional edition.

Notes

  • インポート時に組織構造に合わせて、処理担当者設定の関連付けを行います
  • 「前月案件化集計 取得」「前月リード集計 取得」「前月受注集計 取得」自動工程では、ターゲットとなるワークフロー基盤に対して抽出リクエストが送信されます。
    • ターゲットとなるワークフロー基盤は URL で設定します。(REST API 接続先)
    • ターゲットとなるワークフロー基盤が同一基盤の場合、変数による設定が便利です。(システム変数)
      • ${var[applicationRoot]}
    • ターゲットとなるワークフロー基盤のフィルタの表示設定に従って「表示データ」だけがTSVに格納されます。
      • ただし、フィルタの表示設定に関わらず、案件プロパティ(8項目)はTSV先頭列に格納されます。
        • フォーマット例(リード全件データ)
        • アプリ名, カテゴリ, プロセスID, 件名, 状態, 開始ユーザ, 開始日時, 終了日時,リード終了日,件名,リードステータス,営業担当者
<抽出データ例>
  • スクリプト工程「営業活動結果 集計」では、「前月案件化集計 取得」「前月リード集計 取得」「前月受注集計 取得」自動工程で取得したデータを元に前月の営業成果が集計されます。
    • リード:総件数
    • 受注:総額、営業担当者毎の件数/受注総額
    • 案件化:総額、営業担当者毎の件数/見込総額/案件化率

Arrangement Tips

「営業活動結果 集計」自動工程 Script (click to open)
const qgroup = qgroupDao.findByName("営業部");  //◆対象の組織名を指定してください。◆//
const qusers = quserDao.findByQgroup(qgroup);
const orderList = engine.findDataByVarName("q_order_data");
const trialList = engine.findDataByVarName("q_trial_data");
const leadList = engine.findDataByVarName("q_lead_data");
let rows;
let cols;
main();

function main(){
	// 受注額総計
	let totalAmountOrders = 0;
	let rows = orderList.split("\n");
	let orderResult = "";
	let orderPersonsByQuser = new Array(qusers.size());
	let orderAmountByQuser = new Array(qusers.size()).fill(0);
	let orderCountByQuser = new Array(qusers.size()).fill(0);
	for (var i=0; i < qusers.size();i++){
		orderPersonsByQuser[i] = qusers.get(i).getName() + " <" + qusers.get(i).getEmail() + ">";
	}
	for (var i=0; i < rows.length; i++){
		cols = rows[i].split("\t");
		totalAmountOrders += Number(cols[14].replace(/,/g, ''));
		for (var j=0; j < qusers.size();j++){
			//engine.log(cols[12] + " " + orderPersonsByQuser[j] );
			if (cols[12].indexOf(orderPersonsByQuser[j] ) !== -1 ){
				orderAmountByQuser[j] += Number(cols[14].replace(/,/g, '')) + 0;
				orderCountByQuser[j] += 1;
			}
		}
	}
	engine.log("totalAmountOrders: " + totalAmountOrders);
	let text = "";
	text +=   "<table  cellpadding=3D\"2\" cellspacing=3D\"2\" bgcolor=\"#eeeeee\">";
	for (var i=0; i < qusers.size();i++){
		text += "<tr style=\"font-family:Meiryo\">";
		text += "<td bgcolor=\"#ffffff\" align=\"left\"  style=\"background-color:#ffffff; padding:2px; text-align:left\">" + orderPersonsByQuser[i]+ "</td>";
		text += "<td bgcolor=\"#ffffff\" align=\"right\"  style=\"background-color:#ffffff; padding:2px; text-align:right\">" + orderAmountByQuser[i] + "円(税抜)</td>";
		text += "<td bgcolor=\"#ffffff\" align=\"right\"  style=\"background-color:#ffffff; padding:2px; text-align:lright\">" + orderCountByQuser[i] + "件</td>";
		text += "</tr>";
		engine.log("orderPersonsByQuser[" + i + "]:" + orderPersonsByQuser[i]);
		engine.log("orderAmountByQuser[" + i + "]:" + orderAmountByQuser[i]);
		engine.log("orderCountByQuser[" + i + "]:" + orderCountByQuser[i]);
	}
	text += "</table>";
	engine.setDataByVarName("q_total_amount_orders", 	new java.math.BigDecimal(totalAmountOrders));
	engine.setDataByVarName("q_Individual_totalization_orders", text);
	// 案件化総計
	let totalAmountTrials = 0;
	rows = trialList.split("\n");
	let trialResult = "";
	let trialPersonsByQuser = new Array(qusers.size());
	let trialAmountByQuser = new Array(qusers.size()).fill(0);
	let trialCountByQuser = new Array(qusers.size()).fill(0);
	for (var i=0; i < qusers.size();i++){
		trialPersonsByQuser[i] = qusers.get(i).getName() + " <" + qusers.get(i).getEmail() + ">";
	}
	for (var i=0; i < rows.length; i++){
		cols = rows[i].split("\t");
		totalAmountTrials += Number(cols[14].replace(/,/g, ''));
		for (var j=0; j < qusers.size();j++){
			//engine.log(cols[12] + " " + orderPersonsByQuser[j] );
			if (cols[12].indexOf(trialPersonsByQuser[j] ) !== -1 ){
				trialAmountByQuser[j] += Number(cols[14].replace(/,/g, '')) + 0;
				trialCountByQuser[j] += 1;
			}
		}
	}
	engine.log("totalAmountTrials: " + totalAmountTrials);
	text = "";
	text +=   "<table  cellpadding=3D\"2\" cellspacing=3D\"2\" bgcolor=\"#eeeeee\">";
	for (var i=0; i < qusers.size();i++){
		text += "<tr style=\"font-family:Meiryo\">";
		text += "<td bgcolor=\"#ffffff\" align=\"left\"  style=\"background-color:#ffffff; padding:2px; text-align:left\">" + trialPersonsByQuser[i]+ "</td>";
		text += "<td bgcolor=\"#ffffff\" align=\"right\"  style=\"background-color:#ffffff; padding:2px; text-align:right\">" + trialAmountByQuser[i] + "円(税抜)</td>";
		text += "<td bgcolor=\"#ffffff\" align=\"right\"  style=\"background-color:#ffffff; padding:2px; text-align:right\">" + trialCountByQuser[i] + "件</td>";
		text += "</tr>";
		engine.log("trialPersonsByQuser[" + i + "]:" + trialPersonsByQuser[i]);
		engine.log("trialAmountByQuser[" + i + "]:" + trialAmountByQuser[i]);
		engine.log("trialCountByQuser[" + i + "]:" + trialCountByQuser[i]);
	}
	text += "</table>";
	engine.setDataByVarName("q_total_amount_trials", 	new java.math.BigDecimal(totalAmountTrials));
	engine.setDataByVarName("q_Individual_totalization_trials", text);
}

「集計レポート」HTML メール Body:メッセージ開始イベント(メール)(click to open)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <meta http-equiv="Content-Style-Type" content="text/css">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>#{#q_target_month} 営業活動レポート</title>
</head>
<body bgcolor="#ffffff" style="background-color:#ffffff; margin:0 auto; padding:0; width:100%; font-family:Meiryo">
  <table width="640" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#ffffff" style="width:100%; max-width:640px; border:none; margin:0 auto; padding:0; background-color:#ffffff">
    <tr>
      <td>
        <h2 style="font-size:1.8em; color:#009900; font-family:Meiryo"> #{#q_target_month} 営業活動レポート</h2>
      </td>
    </tr>
    <tr>
      <td>
        <h3 style="font-size:1.6em; font-family:Meiryo"> 集計対象リード件数</h3>
      </td>
    </tr>
    <tr>
      <td style="font-family:Meiryo">#{#q_target_month} にリード管理期間(1ヶ月)を終えたリード件数です。</td>
    </tr>
    <tr>
      <td style="font-family:Meiryo">
        <table cellpadding= "4" cellspacing= "4" bgcolor="#eeeeee">
          <tr>
            <td bgcolor="#ffffff" align= "left" style="background-color:#ffffff; padding:2px; text-align:left">リード件数</td>
            <td bgcolor="#ffffff" align= "right" style="background-color:#ffffff; padding:2px; text-align:right">#{#q_filtered_all_count_lead}件</td>
          </tr>
        </table>
      </td>
    </tr>
    <tr>
      <td>
        <h3 style="font-size:1.6em; font-family:Meiryo"> 受注 結果</h3>
      </td>
    </tr>
    <tr>
      <td style="font-family:Meiryo">#{#q_target_month} 、リード管理期間(1ヶ月)の結果です。</td>
    </tr>
    <tr>
      <td style="font-family:Meiryo">
        <table cellpadding= "4" cellspacing= "4" bgcolor="#eeeeee">
          <tr>
            <td bgcolor="#ffffff" align= "left" style="background-color:#ffffff; padding:2px; text-align:left">受注件数</td>
            <td bgcolor="#ffffff" align= "right" style="background-color:#ffffff; padding:2px; text-align:right">#{#q_filtered_all_count_order}件</td>
          </tr>
          <tr>
            <td bgcolor="#ffffff" align= "left" style="background-color:#ffffff; padding:2px; text-align:left">受注総額 </td>
            <td bgcolor="#ffffff" align= "right" style="background-color:#ffffff; padding:2px; text-align:right">#{#q_total_amount_orders}円(税抜)</td>
          </tr>
        </table>
      </td>
    </tr>
    <tr>
      <td><br></td>
    </tr>
    <tr>
      <td style="font-family:Meiryo"> #{#q_Individual_totalization_orders} </td>
    </tr>
    <tr>
      <td>
        <h3 style="font-size:1.6em; font-family:Meiryo"> 案件化取り組み 結果</h3>
      </td>
    </tr>
    <tr>
      <td style="font-family:Meiryo">#{#q_target_month} 、リード管理期間(1ヶ月)の結果です。</td>
    </tr>
    <tr>
      <td style="font-family:Meiryo">
        <table cellpadding= "4" cellspacing= "4" bgcolor="#eeeeee">
          <tr>
            <td bgcolor="#ffffff" align= "left" style="background-color:#ffffff; padding:2px; text-align:left">案件化件数</td>
            <td bgcolor="#ffffff" align= "right" style="background-color:#ffffff; padding:2px; text-align:right">#{#q_filtered_all_count_trial}件</td>
          </tr>
          <tr>
            <td bgcolor="#ffffff" align= "left" style="background-color:#ffffff; padding:2px; text-align:left">案件化率</td>
            <td bgcolor="#ffffff" align= "right" style="background-color:#ffffff; padding:2px; text-align:right">#{#q_to_trial_rate}%</td>
          </tr>
          <tr>
            <td bgcolor="#ffffff" align= "left" style="background-color:#ffffff; padding:2px; text-align:left">見込み額 </td>
            <td bgcolor="#ffffff" align= "right" style="background-color:#ffffff; padding:2px; text-align:right">#{#q_total_amount_trials}円(税抜)</td>
          </tr>
        </table>
      </td>
    </tr>
    <tr>
      <td><br></td>
    </tr>
    <tr>
      <td style="font-family:Meiryo"> #{#q_Individual_totalization_trials} </td>
    </tr>
    <tr>
      <td height="32" style="height:2.0em"></td>
    </tr>
    <tr>
      <td height="24" bgcolor="#eeeeee" style="height:1.5em; background:#eeeeee"></td>
    </tr>
    <tr>
      <td width="100%" align="center" bgcolor="#eeeeee" style="width:100%; text-align:center; background:#eeeeee; font-size:.8em"> <a href="https://example.com/">ABC Corp.</a> </td>
    </tr>
    <tr>
      <td width="100%" align="center" bgcolor="#eeeeee" style="width:100%; text-align:center; background:#eeeeee; font-size:.7em"> 不明点があれば事務局<officer@sample.co.jp>までご連絡ください。 </td>
    </tr>
    <tr>
      <td height="24" bgcolor="#eeeeee" style="height:1.5em; background:#eeeeee"></td>
    </tr>
    <tr>
      <td height="24" style="height:1.5em"></td>
    </tr>
  </table>
</body>
</html>

Capture

<通知メール例>
<リード案件例:集計対象の個別案件データ>
<集計対象:リード案件リスト(Questetra リード管理プロセス フィルタ設定例)>
<集計対象:案件化リスト(Questetra リード管理プロセス フィルタ設定例)>
<集計対象:受注リスト(Questetra リード管理プロセス フィルタ設定例)>

See also

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

%d