ken_nogi/Pleasanter/営業積算システム/docs/新・営業積算システム仕様書_分割/058_新・営業積算システム仕様書_別記資料スクリプト(28/28).md
Kenichiro NOGI ce58cb4be4 初回コミット: dev配下(NodeSrv/Pleasanter等)をGitea管理下に統合
GitHub(nextgroup2706/ken_nogi)は今後使わず自社Gitea運用に切替え。
NodeSrvは旧リポジトリの履歴を破棄しファイルのみ統合(Dokploy用サービスアカウントは
別途mygit-admin/NodeSrv.gitに履歴あり)。notepmエクスポート(12GB)とPleasanter
インストーラzip(208MB)はサイズが大きいため.gitignoreで除外。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-04 15:37:06 +09:00

4.0 KiB
Raw Permalink Blame History

別記資料 スクリプトScripts全文 2828

/*
@config :
@filename : 祝日リスト取得スクリプト.js
@title : 祝日リスト取得スクリプト
@name :
@siteIds :
@siteTitles : 問合せ内容管理
@disabled: false
*/

try {
    getHolidayList();

    //サイト内に個別設置した独自ボタン(質疑送信・回答送信・質疑回答削除・営業積算確認・受付・外部見積待ちへ・
    //社内確認中へ・一部回答・見積回答・問い合わせ不要・差戻し・遅延連絡、いずれも3_03_質疑応答スクリプト.jsの
    //clickProcessByNameで対応プロセスを呼び出すで代替しているプロセスボタンは非表示にする。
    //それ以外のプロセスボタンはPleasanter標準の表示制御Depts・View条件に委ね、ここでは操作しない
    elements.DisplayType('Process_2', 3);   //受付
    elements.DisplayType('Process_3', 3);   //質疑送信
    elements.DisplayType('Process_4', 3);   //回答送信
    elements.DisplayType('Process_5', 3);   //質疑回答削除
    elements.DisplayType('Process_6', 3);   //積算対応中へ(営業積算確認ボタンで代替)
    elements.DisplayType('Process_7', 3);   //外部見積待ちへ
    elements.DisplayType('Process_8', 3);   //社内確認中へ
    elements.DisplayType('Process_9', 3);   //一部回答
    elements.DisplayType('Process_10', 3);  //見積回答
    elements.DisplayType('Process_12', 3);  //問い合わせ不要
    elements.DisplayType('Process_14', 3);  //差戻し
    elements.DisplayType('Process_18', 3);  //遅延連絡

} catch (error) {
    context.Log(error);
}

//祝日判定テーブルの取得本日時点から手前30日先60日分をHiddenに格納
function getHolidayList() {
    let today = new Date();
    let startDate = new Date();
    let endDate = new Date();

    //30日前の日付を計算
    startDate.setDate(today.getDate() - 30);
    //60日後の日付を計算
    endDate.setDate(today.getDate() + 60);

    let startDateStr = formatDate(startDate) + ' 00:00:00';
    let endDateStr = formatDate(endDate) + ' 23:59:59';
    let filterDate = '["' + startDateStr + ',' + endDateStr + '"]';

    let data = {
        'View': {
            'ColumnFilterHash': {
                'DateA': filterDate,
            },
            'ColumnSorterHash': {
                'DateA': 'asc',
            }
        }
    };

    //祝日テーブルSiteId: 192267からデータを取得
    let results = items.Get(192267, JSON.stringify(data));
    context.Log(`取得した祝日の件数: ${results.Length}`);

    let holidays = [];
    for (let item of results) {
        holidays.push(formatDate(new Date(item.DateA)));
    }

    //取得した祝日日付リストをHiddenに格納
    hidden.Add('HolidaysList', JSON.stringify(holidays));
}

//日付をYYYY/MM/DD形式に整形
function formatDate(date) {
    return date.getFullYear() + '/' +
        (date.getMonth() + 1).toString().padStart(2, '0') + '/' +
        date.getDate().toString().padStart(2, '0');
}

serverscripts/2_Dept25所属者取得スクリプト.js.js

/*
@config :
@filename : Dept25所属者取得スクリプト.js
@title : Dept25所属者取得スクリプト
@name :
@siteIds :
@siteTitles : 問合せ内容管理
@disabled: false
*/

try {
    getDept25Members();
} catch (error) {
    context.Log(error);
}

//Dept25(営業積算課)所属者のUserId→氏名マップを取得しHiddenへ格納する。
//クライアント側resolveUserName()がここから読み込み、表示専用の氏名解決に使う
function getDept25Members() {
    let myDept = depts.Get('25');
    let map = {};

    if (myDept) {
        let members = myDept.GetMembers();
        for (let m of members) {
            map[m.UserId] = m.Name;
        }
    }

    hidden.Add('Dept25Members', JSON.stringify(map));
}