サービスレポート・出張経費精算入力の修正

This commit is contained in:
2026-03-02 17:22:16 +08:00
parent 73d5457e60
commit e6a70963d7
2 changed files with 56 additions and 7 deletions

View File

@@ -75,7 +75,8 @@
// システムコントロールの「サービス」と section に設定された組織と一致するか、
// およびログインユーザーが「勤怠強制連携担当者」に設定されたユーザーするかを取得
return getSystemControlRecord().then(function (systemRecord) {
var detailUserCode = record.engineer_mechanic.value.length > 0 ? record.engineer_mechanic.value[0].code : "";
return getSystemControlRecord(detailUserCode).then(function (systemRecord) {
isSectionService = false;
if (
systemRecord != null &&
@@ -143,7 +144,8 @@
// 管理者かどうかを取得
isAdmin = groupCodes.indexOf(adminGroupCode) !== -1;
return getSystemControlRecord().then(function (systemRecord) {
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 =
@@ -987,16 +989,44 @@
/**
* システムコントロールのレコードを取得します。
* @param {string} userCode - ユーザーコードengineer_mechanic.コード)
* @returns {Promise<kintone.AppRecord__システムコントロール | null>}
*/
function getSystemControlRecord() {
function getSystemControlRecord(userCode) {
// ステップ1: SIGNATURE_MASTERアプリからユーザーの勤務パターンNOを取得
return new KintoneRestAPIClient().record
.getRecords({
app: pvc.env.app.SIGNATURE_MASTER.appId,
query: pvc.util.kintone.makeQuery("担当者 in ((@担当者))", {
担当者: userCode,
}),
fields: ["$id", "担当者", "勤務パターンNO"],
})
.then(function (resp) {
// ステップ2: 勤務パターンNOを取得、不存在または未設定の場合は"1"とする
var patternNo = "1";
if (resp.records.length > 0) {
var signatureRecord = resp.records[0];
if (
signatureRecord.勤務パターンNO != null &&
signatureRecord.勤務パターンNO.value != null &&
signatureRecord.勤務パターンNO.value !== ""
) {
patternNo = signatureRecord.勤務パターンNO.value;
}
}
// ステップ3: システムコントロールからパターンNO等于勤務パターンNO的记录を取得
return new KintoneRestAPIClient().record
.getRecords({
app: pvc.env.app.システムコントロール.appId,
query: "limit 1",
query: pvc.util.kintone.makeQuery("パターンNO in ((@パターンNO))", {
パターンNO: patternNo,
}),
})
.then(function (resp) {
return resp.records.length > 0 ? resp.records[0] : null;
.then(function (systemResp) {
return systemResp.records.length > 0 ? systemResp.records[0] : null;
});
});
}
@@ -2462,7 +2492,7 @@
* @param {kintone.AppRecord__サービスレポート_出張経費精算入力} record
*/
function setLimitSagyouJikanJououTableRows(record) {
const maxRowNum = 7;
const maxRowNum = 20;
const sagyouTableClass = "pvc-desktop-main__sagyouJikanJouhouTable";
let sagyouTable = document.querySelector("." + sagyouTableClass);

View File

@@ -1,6 +1,25 @@
(function () {
"use strict";
/**
* 新規登録・編集画面保存時の処理
* engineer_mechanicに複数のユーザーが設定されている場合は、エラーを表示して保存をキャンセルする
*/
kintone.events.on(
["app.record.create.submit", "app.record.edit.submit"],
function (event) {
const record = event.record;
// engineer_mechanicに複数のユーザーが設定されている場合は、エラーを表示して保存をキャンセル
if (record.engineer_mechanic.value.length > 1) {
event.error = "engineer/mechanicにユーザーが複数設定されています";
return event;
}
return event;
}
);
/**
* 一覧画面の編集保存時の処理
*/