お世話になっております。
タイトルの件について、少し複雑な勤続年数の計算が出来ないか考えております。
現在、下記のフィールドがあります。
・入社日(日付)
・退職日(日付)
・勤続年数(文字列)
【以下サブテーブル「テーブル名:休職」】
・休職開始日(日付)
・休職復帰日(日付)
・休職期間(文字列)
*-----------------------------------*
上記フィールドから
・入社日から今日まで勤続年数の表示
・退職日に値がある場合の入社日から退職日までの勤続年数の表示
・休職開始日から休職復帰日までの休職期間の表示
は出来ているのですが、
・休職テーブルに値が入っている場合、休職期間を差引いた勤続年数の表示をさせたいと考えております。
現在のコード
(function() {
"use strict";
kintone.events.on('app.record.index.show', function(event){
var changed = false;
var getBody = {"app": kintone.app.getId(),};
kintone.api(kintone.api.url('/k/v1/records', true), 'GET', getBody, function(resp) {
var records = resp["records"];
var putBody = {"app": kintone.app.getId(), "records":[]};
records.forEach(function(record){
var today = new Date();
var leave = record.退職日.value;
moment.locale('ja');
if (leave) {var work = termCal(record['入社日'].value, leave);}
else {var work = termCal(record['入社日'].value, today);}
putBody.records.push({
"id": record.$id.value,
"record": {"勤続年数": {"value":work}}
});
if(work != record.勤続年数.value){changed = true;}
});
if(changed){kintone.api(kintone.api.url('/k/v1/records', true), 'PUT', putBody, function(){location.reload();});}
});
});
var events = [
'app.record.create.show', 'app.record.edit.show', 'app.record.index.edit.show',
'app.record.create.change.入社日', 'app.record.edit.change.入社日', 'app.record.index.edit.show".入社日',
'app.record.create.change.退職日', 'app.record.edit.change.退職日', 'app.record.index.edit.show".退職日',
'app.record.create.change.休職開始日', 'app.record.edit.change.休職開始日', 'app.record.index.edit.show".休職開始日',
'app.record.create.change.休職復帰日', 'app.record.edit.change.休職復帰日', 'app.record.index.edit.show".休職復帰日'
];
kintone.events.on(events, function(event) {
var record = event.record;
var today = new Date();
var leave = record.退職日.value;
var restTable = record.休職.value;
moment.locale('ja');
if (['app.record.create.show', 'app.record.edit.show', 'app.record.index.edit.show'].indexOf(event.type) >= 0) {
record['勤続年数']['disabled'] = true
today = moment().format('YYYY-MM-DD');
}
if (leave) {record['勤続年数'].value = termCal(record['入社日'].value, leave);}
else {record['勤続年数'].value = termCal(record['入社日'].value, today);}
for (var i = 0; i < restTable.length; i++) {
restTable[i].value['休職期間']['disabled'] = true;
restTable[i].value['休職期間'].value = termCal(restTable[i].value['休職開始日'].value, restTable[i].value['休職復帰日'].value);
}
return event;
});
function termCal(wkDate, wkReferenceDate) {
if (wkDate && wkReferenceDate) {
var mDate = moment(wkDate);
var mReferenceDate = moment(wkReferenceDate);
if (!mReferenceDate.isBefore(moment(mDate), 'day')) {
var year = mReferenceDate.diff(moment(mDate), 'year');
var month = mReferenceDate.diff(moment(mDate), 'month') % 12;
return year + "年" + month + "ヶ月";
}
}
return '';
}
})();
ご教授いただいたければ幸いでございます。
お手数でございますが、ご確認お願いいたします。