kintoneカスタマイズで、holiday_jp-jsを使って営業日/休業日を判定する

holiday_jp-jsを使って営業日/休業日を判定するサンプルを作成しました。

サンプル

入力した日付が休業日かどうかを判定し,その結果を別の文字列(1行)フィールドに表示します.

フォーム設定

コード

下記JSを順に読み込みます.

  • holiday_jp.min.js (こちらからダウンロード)
  • sample.js (下記参照)

・sample.js

(function(){"use strict";varcustomHolidays=[{// 会社独自の休日設定date:'1/2',name:'年末年始休暇'},{date:'1/3',name:'年末年始休暇'},{date:'12/29',name:'年末年始休暇'},{date:'12/30',name:'年末年始休暇'},{date:'12/31',name:'年末年始休暇'}];functiongetCustomHoliday(date){varformattedDate=(date.getMonth()+1)+'/'+date.getDate();returncustomHolidays.find(function(customHoliday){returncustomHoliday.date===formattedDate});}functionisWeekday(date){return(!holiday\_jp.isHoliday(date)&&!getCustomHoliday(date)&&date.getDay()!==0&&date.getDay()!==6);}functiongetDayName(date){varholidays=holiday\_jp.between(date,date);if(holidays.length)returnholidays[0].name;varcustomHoliday=getCustomHoliday(date);if(customHoliday)returncustomHoliday.name;varday=date.getDay();if(day===0)return'日曜日';if(day===6)return'土曜日';return'';}functionupdateDayInfoField(event){vardate=newDate(event.record['date'].value);vardayInfoString='';if(isWeekday(date)){dayInfoString='営業日';}else{vardayName=getDayName(date);dayInfoString='休業日'+'('+dayName+')';}event.record['dayInfo'].value=dayInfoString;}functionupdateDateField(event){vardate=newDate(event.record['date'].value);if(!isWeekday(date)&&confirm('指定日が休業日です.直前の営業日にしますか?')){while(!isWeekday(date)){date.setDate(date.getDate()-1);}event.record['date'].value=date.getFullYear()+'-'+(date.getMonth()+1)+'-'+date.getDate();}}// レコード作成/編集:祝日名などをdayInfoフィールドに代入kintone.events.on(['app.record.edit.change.date','app.record.create.change.date'],function(event){// updateDateField(event); // 指定日が休業日なら直前の営業日にするupdateDayInfoField(event);returnevent;});// レコード作成/編集:dayInfoフィールドを編集不可にするkintone.events.on(['app.record.edit.show','app.record.create.show'],function(event){event.record['dayInfo'].disabled=true;updateDayInfoField(event);returnevent;});})();

「指定日が休業日なら直前の営業日にする」処理を追記しました. 70行目のコメントアウト部を有効にすると実装できます.

参考記事

江田様

 

いつもお世話になっております。

サンプルを活用させていただいておりますが、土曜日に例外を作りたいのですが

変更するポイントをご教授いただけないでしょうか?

 

やりたいこととしては月に不定期で土曜日出社の日があるとした場合、

「会社独自の休日設定」の逆で「会社独自の稼働日」を設定したいと思っています。

 

土曜日の判定を消して、土曜日休みを単純に「会社独自の休日設定」追加すればいいのかと思いますが

土曜日は稼働日より休みの日が多いので、逆の処理ができればと考えています。

 

お手すきな時にでもご教授頂ければ幸いです。よろしくお願いいたします。