決裁に要している時間、平均で何時間?

2014年8月25日
「稟議 (RINGI-system)」をペーパレス化するとなると、アレコレ「あるべき姿」を考えたくなるモノだ。

特に日本企業の場合、(a)他部門の責任者にも承認を求める日本の伝統的な流儀を継承するのか、(b)決裁権限者にのみ素早い判断を求める体制に移行するのか、、、まずは基本的なトコロから考え直さなければならない。

以下の業務プロセス定義は、「Proposal (企画)」を会社に提出すると、起案者から見た組織ツリー上の決裁者に対し、ダイレクトに決裁判断を求めるフローだ。つまり日本の伝統的な流儀を継承していないスピード重視のフロー図だ。もちろん「稟議システム」と言っても良いが、ココはあえて「企画決裁システム」と表現しておこう。秀逸なポイントは、決裁までに要した時間が自動的に計算される仕組みだ。

ちなみに起案者と決裁者が同一人物の場合について、条件分岐を付けたがる人が居る。しかし、ソコは役割や人格が違う訳であり、自分で起案し自分で決裁すれば良い。

[企画決裁フロー]



[企画決裁フロー:「1.企画の提出」画面]

決裁者が評価されるべき指標は、(1)決裁までに要した時間と(2)有効な予算配分だ。

(2)有効な予算配分については、決裁した企画を俯瞰するしかないが、(1)決裁までに要した時間については、期中においても逐次認識したい。この例では、決裁までに要した時間が自動的に計算され、それぞれの案件データとして自動記録される。しかし、単に「連絡を受けた時刻」と「決裁した時刻」の差分を算出するのでは、深夜に企画が申請された場合など、無駄に長い時間が記録される。そのデータは統計的に意味が無い。そこでこの例においては、夜21時から朝9時を累計時間に含まない計算式になっている。

<Sample Script>
var OpeningOfBusiness = 9; // 対応開始時刻 9:00
var CloseOfBusiness = 21; // 対応終了時刻 21:00
var offerDatetime = data.get("9");
var endDatetime = data.get("10");

//計算用の開始時刻 d1
var d1 = offerDatetime;
if(offerDatetime.getHours() < OpeningOfBusiness) // 0時から9時に申請の場合、
{
d1 = offerDatetime.getFirstTimeInDate().addHours(OpeningOfBusiness); // 開始時刻を9時とみなす
}
else if(CloseOfBusiness <= offerDatetime.getHours() ) // 21時以降に申請の場合、
{
d1 = offerDatetime.addDays(1).getFirstTimeInDate().addHours(OpeningOfBusiness); // 日付を翌日に進め、9時にセットする
}

//計算用の終了時刻 d2
var d2 = endDatetime;
if(CloseOfBusiness <= endDatetime.getHours() ) // 21時以降に終了の場合
{
d2 = endDatetime.getFirstTimeInDate().addHours(CloseOfBusiness); // 21時とみなしてセットする
}
else if( endDatetime.getHours() < OpeningOfBusiness ) // 0時から9時に終了の場合
{
d2 = endDatetime.addDays(-1).getFirstTimeInDate().addHours(CloseOfBusiness); // 日付を前日に戻し、21時にセットする
}

//正味経過時間
var intervalDate = ( Math.floor(d2.getTime() / 1000 /3600 /24 ) - Math.floor(d1.getTime() / 1000 /3600 /24) ) ; // 経過日数=夜の数(d)
var intervalHour = ( d2.getTime() - d1.getTime() ) / 1000 / 3600; // 経過時間(h)
var netIntervalHour = intervalHour - intervalDate * (24 - CloseOfBusiness + OpeningOfBusiness);
var netIntervalHour2 = Math.floor( netIntervalHour * 100 + 0.5 ) / 100; //※小数点以下第2位で四捨五入
if(netIntervalHour2 < 0){netIntervalHour2 = 0;} // 深夜に申請、深夜に終了の場合などをゼロに
retVal.put("11", java.math.BigDecimal( netIntervalHour2 ) );


<データ項目一覧画面>


[雛形ダウンロード (無料)]
<類似プロセス>
≪関連記事≫

0 件のコメント :

コメントを投稿