apply pattern when username change
This commit is contained in:
@@ -144,27 +144,7 @@
|
||||
// 管理者かどうかを取得
|
||||
isAdmin = groupCodes.indexOf(adminGroupCode) !== -1;
|
||||
|
||||
var editUserCode = record.engineer_mechanic.value.length > 0 ? record.engineer_mechanic.value[0].code : "";
|
||||
return getSystemControlRecord(editUserCode).then(function (systemRecord) {
|
||||
if (systemRecord != null) {
|
||||
// サービスレポート承認者グループに所属するユーザーかどうかを取得
|
||||
const serviceReportAuthorizerCodes =
|
||||
systemRecord.サービスレポート承認者グループ.value.map(function (
|
||||
group
|
||||
) {
|
||||
return group.code;
|
||||
});
|
||||
isServiceReportAuthorizer = serviceReportAuthorizerCodes.some(
|
||||
function (serviceReportAuthorizerCode) {
|
||||
return groupCodes.indexOf(serviceReportAuthorizerCode) !== -1;
|
||||
}
|
||||
);
|
||||
|
||||
// システムコントロール情報の設定
|
||||
setSystemControlField(systemRecord, record);
|
||||
setSystemInfo(record);
|
||||
}
|
||||
});
|
||||
return fetchSystemControlAndUpdateFields(record, groupCodes);
|
||||
})
|
||||
.then(function () {
|
||||
setHiddenField(isAdmin);
|
||||
@@ -183,6 +163,41 @@
|
||||
}
|
||||
);
|
||||
|
||||
/**
|
||||
* 「engineer_mechanic」変更時の処理を行います。
|
||||
*/
|
||||
kintone.events.on(
|
||||
[
|
||||
"app.record.create.change.engineer_mechanic",
|
||||
"app.record.edit.change.engineer_mechanic",
|
||||
],
|
||||
function (
|
||||
/** @type {kintone.AppEvent__サービスレポート_出張経費精算入力} */
|
||||
event
|
||||
) {
|
||||
const record = event.record;
|
||||
|
||||
if (record.engineer_mechanic.value.length > 0) {
|
||||
pvc.util.ui.showSpinner();
|
||||
getLoginUserGroupCodes()
|
||||
.then(function (groupCodes) {
|
||||
return fetchSystemControlAndUpdateFields(record, groupCodes);
|
||||
})
|
||||
.then(function () {
|
||||
setDisabledField(record, isServiceReportAuthorizer);
|
||||
kintone.app.record.set(event);
|
||||
pvc.util.ui.hideSpinner();
|
||||
})
|
||||
.catch(function (error) {
|
||||
pvc.util.ui.hideSpinner();
|
||||
console.error(error);
|
||||
alert("システムエラーが発生しました");
|
||||
});
|
||||
}
|
||||
return event;
|
||||
}
|
||||
);
|
||||
|
||||
/**
|
||||
* 「作業時間情報」変更時の処理を行います。
|
||||
*/
|
||||
@@ -987,6 +1002,36 @@
|
||||
return pvc.util.array.sum(includeTimeNumList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 指定されたユーザーコードのシステムコントロール情報を取得してフィールドに設定します。
|
||||
* @param {kintone.AppRecord__サービスレポート_出張経費精算入力} record
|
||||
* @param {string[]} groupCodes - ログインユーザーの所属グループコードリスト
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
function fetchSystemControlAndUpdateFields(record, groupCodes) {
|
||||
var userCode = record.engineer_mechanic.value.length > 0 ? record.engineer_mechanic.value[0].code : "";
|
||||
return getSystemControlRecord(userCode).then(function (systemRecord) {
|
||||
if (systemRecord != null) {
|
||||
// サービスレポート承認者グループに所属するユーザーかどうかを取得
|
||||
const serviceReportAuthorizerCodes =
|
||||
systemRecord.サービスレポート承認者グループ.value.map(function (
|
||||
group
|
||||
) {
|
||||
return group.code;
|
||||
});
|
||||
isServiceReportAuthorizer = serviceReportAuthorizerCodes.some(
|
||||
function (serviceReportAuthorizerCode) {
|
||||
return groupCodes.indexOf(serviceReportAuthorizerCode) !== -1;
|
||||
}
|
||||
);
|
||||
|
||||
// システムコントロール情報の設定
|
||||
setSystemControlField(systemRecord, record);
|
||||
setSystemInfo(record);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* システムコントロールのレコードを取得します。
|
||||
* @param {string} userCode - ユーザーコード(engineer_mechanic.コード)
|
||||
|
||||
@@ -53,15 +53,9 @@
|
||||
setHiddenTableRowButton();
|
||||
|
||||
pvc.util.ui.showSpinner();
|
||||
var userCode = record.氏名.value.length > 0 ? record.氏名.value[0].code : "";
|
||||
return getSystemControlRecord(userCode)
|
||||
.then(function (systemRecord) {
|
||||
return fetchAndSetSystemControlInfo(record)
|
||||
.then(function () {
|
||||
pvc.util.ui.hideSpinner();
|
||||
if (systemRecord != null) {
|
||||
setSystemControlField(systemRecord, record);
|
||||
setSystemInfo(record);
|
||||
}
|
||||
|
||||
return event;
|
||||
})
|
||||
.catch(function (error) {
|
||||
@@ -90,39 +84,42 @@
|
||||
) {
|
||||
const record = event.record;
|
||||
const sinseiNengetu = pvc.util.obj.toNumber(record.申請年月.value) || 0;
|
||||
|
||||
// 既存の申請年月変更時の処理を継続
|
||||
if (isNengetuNum(sinseiNengetu) && record.氏名.value.length > 0) {
|
||||
kintone.Promise.resolve().then(function () {
|
||||
pvc.util.ui.showSpinner();
|
||||
pvc.util.ui.showSpinner();
|
||||
// 「氏名」変更時にシステムコントロールの情報を取得
|
||||
fetchAndSetSystemControlInfo(record)
|
||||
.then(function () {
|
||||
/** @type {{ record: kintone.AppRecord__勤怠申請入力_内勤者用 }} */
|
||||
const r = kintone.app.record.get();
|
||||
return existsDuplicateData(r.record)
|
||||
.then(function (isExists) {
|
||||
if (isExists) {
|
||||
// 重複するデータが既に存在する場合
|
||||
alert("既に登録済です。");
|
||||
return;
|
||||
}
|
||||
|
||||
/** @type {{ record: kintone.AppRecord__勤怠申請入力_内勤者用 }} */
|
||||
const r = kintone.app.record.get();
|
||||
return existsDuplicateData(r.record)
|
||||
.then(function (isExists) {
|
||||
if (isExists) {
|
||||
// 重複するデータが既に存在する場合
|
||||
alert("既に登録済です。");
|
||||
return;
|
||||
}
|
||||
// 就業届テーブルにデータを作成
|
||||
return setSyuugyouTodokeTable(r.record).then(function () {
|
||||
// 使用不可を設定
|
||||
setDisabledField(r.record);
|
||||
|
||||
// 就業届テーブルにデータを作成
|
||||
return setSyuugyouTodokeTable(r.record).then(function () {
|
||||
// 使用不可を設定
|
||||
setDisabledField(r.record);
|
||||
|
||||
// レコードに値を設定
|
||||
kintone.app.record.set(r);
|
||||
});
|
||||
})
|
||||
.then(function () {
|
||||
// スピナーを非表示
|
||||
pvc.util.ui.hideSpinner();
|
||||
})
|
||||
.catch(function (error) {
|
||||
pvc.util.ui.hideSpinner();
|
||||
console.error(error);
|
||||
alert("システムエラーが発生しました");
|
||||
});
|
||||
});
|
||||
// レコードに値を設定
|
||||
kintone.app.record.set(r);
|
||||
});
|
||||
})
|
||||
})
|
||||
.then(function () {
|
||||
// スピナーを非表示
|
||||
pvc.util.ui.hideSpinner();
|
||||
})
|
||||
.catch(function (error) {
|
||||
pvc.util.ui.hideSpinner();
|
||||
console.error(error);
|
||||
alert("システムエラーが発生しました");
|
||||
});
|
||||
}
|
||||
return event;
|
||||
}
|
||||
@@ -719,6 +716,21 @@
|
||||
return strValue.length === 6 && 1 <= mm && mm <= 12;
|
||||
}
|
||||
|
||||
/**
|
||||
* 指定されたユーザーコードのシステムコントロール情報を取得してフィールドに設定します。
|
||||
* @param {kintone.AppRecord__勤怠申請入力_内勤者用} record
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
function fetchAndSetSystemControlInfo(record) {
|
||||
var userCode = record.氏名.value.length > 0 ? record.氏名.value[0].code : "";
|
||||
return getSystemControlRecord(userCode).then(function (systemRecord) {
|
||||
if (systemRecord != null) {
|
||||
setSystemControlField(systemRecord, record);
|
||||
setSystemInfo(record);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* システムコントロールのレコードを取得します。
|
||||
* @param {string} userCode - ユーザーコード(氏名.コード)
|
||||
|
||||
@@ -1,6 +1,25 @@
|
||||
(function () {
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
* 新規登録・編集画面保存時の処理
|
||||
* 氏名に複数のユーザーが設定されている場合は、エラーを表示して保存をキャンセルする
|
||||
*/
|
||||
kintone.events.on(
|
||||
["app.record.create.submit", "app.record.edit.submit"],
|
||||
function (event) {
|
||||
const record = event.record;
|
||||
|
||||
// 氏名に複数のユーザーが設定されている場合は、エラーを表示して保存をキャンセル
|
||||
if (record.氏名.value.length > 1) {
|
||||
event.error = "氏名にユーザーが複数設定されています";
|
||||
return event;
|
||||
}
|
||||
|
||||
return event;
|
||||
}
|
||||
);
|
||||
|
||||
/**
|
||||
* 一覧画面の編集保存時の処理
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user