ken_nogi/Pleasanter/営業積算システム/docs/新・営業積算システム仕様書_分割/031_新・営業積算システム仕様書_別記資料スクリプト(1/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

5.5 KiB
Raw Permalink Blame History

scripts/1_01_基本スクリプト.js.js

/*
@config :
@filename : ${psFileBasename}
@title : 01_基本スクリプト
@name :
@siteIds :
@siteTitles : 物件基本情報
@disabled: false
*/

let pageLoading = 0;

//----------------------------------------------------------------------
//初期処理
window.addEventListener('load', function () {
    if (pageLoading == 0) {
        console.log('Window load Event');
        $p.ex.onLoad();
    }
});

$p.events.on_editor_load = function () {
    if (pageLoading == 0) {
        console.log('on Editor Load');
        $p.ex.onLoad();
    }
}

//----------------------------------------------------------------------
$p.ex.onLoad = function () {
    //ロード開始
    pageLoading = 1;

    //初期処理
    $p.ex.init();

}

//初期処理
$p.ex.init = function () {
    console.log('initialize...');

    //ロード時に施主名を予め控えておく
    $p.loadCustomerName();

    //依頼発行ボタン名称変更
    $p.changeButtonName();

    //登録状況Statusに応じて依頼発行ボタンの表示・非表示を切り替え
    $p.toggleNewRequestButton();

    //ServerScriptが事前取得したエリア・契約ブランド・契約営業所マスタをhiddenから読み込む
    $p.loadStaticMasters();

    //マスターシート・エリア・契約ブランド・契約営業所の現在値を「変更前の値」として記憶
    //(未選択→選択のときは既存値を保持、選択済み→別選択のときは上書き、を判定するため)
    $p.rememberLookupBaseValues();

    //登録完了(Status=200)以降、マスターシートが選択済みの場合のみ選択変更を不可にする
    //(未選択のままなら登録完了後も選択可能にする)
    $p.toggleClassYLock();

    //code-readonly2読取り専用が設定されている全フィールドをTab移動対象から除外する
    //ClassYの動的ロックも含め、上記の処理が確定した後に実行する
    $p.applyReadonlyTabindex();
}

//入力チェック後処理
$p.events.after_validate = function (args) {
    //担当者一覧のマージ
    $p.mergeUserList();
}

//画面更新後
$p.events.after_set_Update = function (args) {
    //初期処理
    $p.ex.init();
}

//----------------------------------------------------------------------
//施主名を控える
let customerName = {
    'firstName': '',
    'lastName': '',
    'firstNameKana': '',
    'lastNameKana': ''
}

//ロード時に施主名を予め控えておく
$p.loadCustomerName = function () {
    customerName.firstName = $('#Results_Class002').val();   //施主1・名
    customerName.lastName = $('#Results_Class001').val();   //施主1・姓
    customerName.firstNameKana = $('#Results_Class004').val();   //施主1・名カナ
    customerName.lastNameKana = $('#Results_Class003').val();   //施主1・姓カナ
}

//----------------------------------------------------------------------
//入力チェック前処理
//更新ボタンを押したあと、入力必須項目などのチェックの前に処理される関数
$p.events.before_validate = function (args) {
    //新規作成時のみ、重複チェックキー(施主氏名カナ・エリア)の最終確認を促す
    //(登録完了処理後、この項目は編集不可になるため、新規作成の保存前に一度だけ確認する)
    if ($p.action() === 'new') {
        if (!confirm($p.buildNewRecordKeyConfirmMessage())) {
            return false; //保存中断
        }
    }

    //施主名がどれか1つでも変更されていたら処理する
    if (customerName.firstName != $('#Results_Class002').val() || customerName.lastName != $('#Results_Class001').val() || customerName.firstNameKana != $('#Results_Class004').val() || customerName.lastNameKana != $('#Results_Class003').val()) {
        $p.mergeCustomerName();
    }

    //担当者一覧のマージ
    $p.mergeUserList();

    //重複チェック用の連結値をClass200へ保存Class200はNoDuplication設定済みのため、
    //保存時にPleasanter標準機能が重複判定・アラート表示・保存ブロックを行う
    $p.mergeClass200();
}

//----------------------------------------------------------------------
//重複チェック用に施主1・姓カナ施主1・名カナエリア重複許容をClass200へ連結する
//主担当営業・契約営業所は人事異動等で変わりうるためキーに含めない(同一物件でも担当者交代で
//別レコード扱いになってしまうのを防ぐ)。エリアは物件の位置そのもので不変のためキーに採用。
//エリアが異なれば同姓同名でも別物件として許容する。
//Class199重複許容、営業積算専用・通常空欄は、同一エリアに同姓同名の別物件が実在する
//稀なケースの回避弁。営業積算が「重複1」「重複10」のいずれかを設定すると、その値も
//キーに含まれるため重複チェックをすり抜けられる同一エリア同姓同名は最大10件まで想定$p.mergeClass200 = function () {
    let str1 = $p.normalizeForDuplicationKey($('#Results_Class003').val());   //施主1・姓カナ
    let str2 = $p.normalizeForDuplicationKey($('#Results_Class004').val());   //施主1・名カナ
// ...(次ファイルへ続く)