勤続年数の計算について

お世話になっております。

タイトルの件について、少し複雑な勤続年数の計算が出来ないか考えております。

現在、下記のフィールドがあります。

・入社日(日付)

・退職日(日付)

・勤続年数(文字列)

【以下サブテーブル「テーブル名:休職」】

・休職開始日(日付)

・休職復帰日(日付)

・休職期間(文字列)

*-----------------------------------*

上記フィールドから

・入社日から今日まで勤続年数の表示

・退職日に値がある場合の入社日から退職日までの勤続年数の表示

・休職開始日から休職復帰日までの休職期間の表示

は出来ているのですが、

・休職テーブルに値が入っている場合、休職期間を差引いた勤続年数の表示をさせたいと考えております。

現在のコード

(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 '';
    }
})();

ご教授いただいたければ幸いでございます。

お手数でございますが、ご確認お願いいたします。

Naoさん

day 単位で計算して、それを year年monthヶ月 と表現する考え方だと解釈しました。

year年monthヶ月になると、計算がめんどくさいので、day 単位で計算した結果を、画面なり変数に保管しておき、

勤続年数DAY - SUM(休職期間DAY) で、休職期間を加味した勤続年数 が計算できるかなと思いますが、

いかがでしょうか。

上海レンユアー 松村様

ご返信ありがとうございます。また、返信が遅れて申し訳ごいざません。

ご教授いただいた内容について、現在の私では少し難易度が高い為、

少し時間をかけて設定を行おうと思います。

設定ができましたら、またこちらに共有しようと思います。

ありがとうございました。今後ともよろしくお願いいたします。