お世話になっております。初心者で大変恐縮です。
①と②についてアドバイスいただきたく投稿させて頂きました。アドバイスいただけると幸いです。よろしくお願い致します。
jQuery.noConflict();
(function() {
“use strict”;
kintone.events.on([
“app.record.create.change.形態”, “app.record.edit.change.形態”,
“app.record.create.change.Table”, “app.record.edit.change.Table”,
], function(event) {
var record = event.record;
var sum = 0;
var sum2 = 0;
var day;
var day2;
var hour;
var hour2;
var 有休日数= “有休数”;
var 実務日数= “実務数”;
var working = record.所定労働時間.value;
for (var i = 0; i < record.Table.value.length; i++) {
if (record.Table.value[i].value.形態.value ==‘有給’ && record.Table.value[i].value.勤務時間.value !== “”) {
var time = record.Table.value[i].value.勤務時間.value.split(‘:’);
sum += (Number(time[0]) * 60 + Number(time[1]));
}if (record.Table.value[i].value.形態.value== ‘出勤’ && record.Table.value[i].value.勤務時間.value !== “”) {
var time2 = record.Table.value[i].value.勤務時間.value.split(‘:’);
sum2 += (Number(time2[0]) * 60 + Number(time2[1]));
}
}
day = Math.floor(sum / (working * 60));
day2 = Math.floor(sum2 / (working * 60));
hour = (sum % (working * 60)) / 60;
hour2 = (sum2 % (working * 60)) / 60;
record.有休数.value = day + “日” + hour + “時間”;
record.実務数.value = day2 + “日” + hour2 + “時間”;
return event;
});
})(jQuery);
玲香様
お世話になっております。
cstapの江田です。
勤務時間を文字列フィールドにしてJavaScriptにて計算するのが良いのではないでしょうか?
その場合、以下のコードで実装できるかと思います。
(function(){"use strict";kintone.events.on(["app.record.create.show","app.record.edit.show"],function(event){event.record.有休数.disabled=true;event.record.実務数.disabled=true;event.record.実務日数.disabled=true;event.record.Table.value[0].value.勤務時間.disabled=true;event.record.実務日数.value=event.record.Table.value.length;returnevent;});kintone.events.on(["app.record.create.change.開始","app.record.edit.change.開始","app.record.create.change.終了","app.record.edit.change.終了","app.record.create.change.休憩","app.record.edit.change.休憩",],function(event){event.changes.row.value.勤務時間.value=event.changes.row.value.開始.value;varstart\_time;varend\_time;vartime;varhour;varminute;if(typeofevent.changes.row.value.開始.value!=="undefined"&&typeofevent.changes.row.value.終了.value!=="undefined"&&typeofevent.changes.row.value.休憩.value!=="undefined"){start\_time=event.changes.row.value.開始.value.split(':');end\_time=event.changes.row.value.終了.value.split(':');time=(Number(end\_time[0])\*60+Number(end\_time[1]))-(Number(start\_time[0])\*60+Number(start\_time[1]))-Number(event.changes.row.value.休憩.value);hour=Math.floor(time/60);minute=time%60;event.changes.row.value.勤務時間.value=hour+"時間"+minute+"分";}else{event.changes.row.value.勤務時間.value=undefined;}if(typeofevent.record.所定労働時間.value!=="undefined")returncalcDays(event);returnevent;});kintone.events.on(["app.record.create.change.所定労働時間","app.record.edit.change.所定労働時間","app.record.create.change.形態","app.record.edit.change.形態","app.record.create.change.Table","app.record.edit.change.Table",],function(event){varwork\_days=0;event.record.Table.value.forEach(function(row){if(row.value.形態.value==="出勤")work\_days++;});event.record.実務日数.value=work\_days;if(event.changes.row!==null)event.changes.row.value.勤務時間.disabled=true;if(typeofevent.record.所定労働時間.value!=="undefined")returncalcDays(event);returnevent;});functioncalcDays(event){varrecord=event.record;vartypes=[{radioLabel:'有給',daysFieldCode:'有休数'},{radioLabel:'出勤',daysFieldCode:'実務数'},];types.forEach(function(type){vartime=[];varsum=0;varday;varhour;varworking=record.所定労働時間.value;for(vari=0;i\<record.Table.value.length;i++){if(record.Table.value[i].value.形態.value===type.radioLabel&&typeofrecord.Table.value[i].value.勤務時間.value!=="undefined"){time=record.Table.value[i].value.勤務時間.value.split(/時間|分/g);sum+=(Number(time[0])\*60+Number(time[1]));}}day=Math.floor(sum/(working\*60));hour=(sum%(working\*60))/60;record[type.daysFieldCode].value=day+"日"+hour+"時間";});returnevent;}})();
江田篤史 様
いつも大変お世話になっております。
再びコードまで頂き、ご指導いただき、本当に本当にとっても感謝しております。
まさに願っていた操作までできるなんって、本当に感動するばかりでございます。本当にありがとうございます。** これからしばらくお****時間かけて、江田様が書いていただいたコードを解読できるように頑張ります。**
これからもぜひ、色々とご指導お願い致します。
※今疑問になっている2ヶ所が以下のようになっております。
想定通り一ヶ月分登録し保存したあと、レコードの編集をすると
①** 「実務実数」が変わってしまう⇒有給で選んだ日も数に入ってしまいます・・**
②「勤務時間」のロックが解除されて、編集可能になってしまう。
以下のようにコード書いてみたら、動いたが、これで大丈夫かどうか確認していただけると幸いです。
kintone.events.on([“app.record.create.show”,“app.record.edit.show”,“app.record.create.change.Table”, “app.record.edit.change.Table”], function(event) {
event.record.有休数.disabled = true;
event.record.実務数.disabled = true;
event.record.実務日数.disabled = true;
var table = event.record.Table.value;
for (var i = 0, l = table.length; i < l; i++) {
event.record.Table.value[i].value.勤務時間.disabled = true;
}
//event.record.実務日数.value = event.record.Table.value.length;
return event;
});
お手数をおかけまして、大変申し訳ございませんが、再びアドバイスいただければ幸いです。よろしくお願い致します。
玲香様
お世話になっております。
確認不足でした。申し訳ございません。
はい、そのような記述になるかと思います。
ただ、今後もしフィールドの初期値を設定する場合、正しく動作しなくなることが考えられるので、そのときはまたお声をかけて頂ければと思います。