diff --git a/NodeJS/Care7_old.zip b/NodeJS/Care7_old.zip new file mode 100644 index 00000000..d844dc91 Binary files /dev/null and b/NodeJS/Care7_old.zip differ diff --git a/pleasanter/develop/#営業積算/doc/営業積算_リニューアル2024-selected/★積算問い合わせ2025ver_プリザンター項目定義書.xlsx b/pleasanter/develop/#営業積算/doc/営業積算_リニューアル2024-selected/★積算問い合わせ2025ver_プリザンター項目定義書.xlsx index eb3c91e6..5d7132ff 100644 Binary files a/pleasanter/develop/#営業積算/doc/営業積算_リニューアル2024-selected/★積算問い合わせ2025ver_プリザンター項目定義書.xlsx and b/pleasanter/develop/#営業積算/doc/営業積算_リニューアル2024-selected/★積算問い合わせ2025ver_プリザンター項目定義書.xlsx differ diff --git a/pleasanter/develop/#営業積算/doc/営業積算_リニューアル2024-selected/帳票/帳票テンプレート(個別用)Ver2507-02.xlsx b/pleasanter/develop/#営業積算/doc/営業積算_リニューアル2024-selected/帳票/帳票テンプレート(個別用)Ver2507-02.xlsx deleted file mode 100644 index c54c81a2..00000000 Binary files a/pleasanter/develop/#営業積算/doc/営業積算_リニューアル2024-selected/帳票/帳票テンプレート(個別用)Ver2507-02.xlsx and /dev/null differ diff --git a/pleasanter/develop/#営業積算/doc/営業積算_リニューアル2024-selected/帳票/帳票テンプレート(個別用)Ver2507-03a.xlsx b/pleasanter/develop/#営業積算/doc/営業積算_リニューアル2024-selected/帳票/帳票テンプレート(個別用)Ver2507-03a.xlsx new file mode 100644 index 00000000..3afee9bf Binary files /dev/null and b/pleasanter/develop/#営業積算/doc/営業積算_リニューアル2024-selected/帳票/帳票テンプレート(個別用)Ver2507-03a.xlsx differ diff --git a/pleasanter/develop/#営業積算/doc/営業積算_リニューアル2024-selected/帳票/帳票テンプレート(承認図以降)Ver2507-03b.xlsx b/pleasanter/develop/#営業積算/doc/営業積算_リニューアル2024-selected/帳票/帳票テンプレート(承認図以降)Ver2507-03b.xlsx new file mode 100644 index 00000000..839ddc26 Binary files /dev/null and b/pleasanter/develop/#営業積算/doc/営業積算_リニューアル2024-selected/帳票/帳票テンプレート(承認図以降)Ver2507-03b.xlsx differ diff --git a/pleasanter/develop/#営業積算/■1_310406_Re①基本情報/sites/scripts/01_基本スクリプト.js b/pleasanter/develop/#営業積算/■1_310406_Re①基本情報/sites/scripts/01_基本スクリプト.js index feea8580..c8854daa 100644 --- a/pleasanter/develop/#営業積算/■1_310406_Re①基本情報/sites/scripts/01_基本スクリプト.js +++ b/pleasanter/develop/#営業積算/■1_310406_Re①基本情報/sites/scripts/01_基本スクリプト.js @@ -176,7 +176,9 @@ $p.ex.areaBrandName = function () { let brand = $('#Results_Class012 option:selected').text(); if (area && brand) { - $p.set($('#Results_ClassL'), area + ' ' + brand); + if ($('#Results_ClassL').val() == '') { + $p.set($('#Results_ClassL'), area + ' ' + brand); + } } } diff --git a/pleasanter/develop/#営業積算/■1_310406_Re①基本情報/sites/scripts/99_更新履歴保存スクリプト.js b/pleasanter/develop/#営業積算/■1_310406_Re①基本情報/sites/scripts/99_更新履歴保存スクリプト.js index df3fd717..aa656411 100644 --- a/pleasanter/develop/#営業積算/■1_310406_Re①基本情報/sites/scripts/99_更新履歴保存スクリプト.js +++ b/pleasanter/develop/#営業積算/■1_310406_Re①基本情報/sites/scripts/99_更新履歴保存スクリプト.js @@ -29,6 +29,13 @@ $p.ex.saveHistory = function () { 'Results_Num051', 'Results_Num052', 'Results_Num053', + 'Results_Num054', + 'Results_Num055', + 'Results_Num056', + 'Results_Num057', + 'Results_Num058', + 'Results_Num059', + 'Results_Num060', 'Results_Description200' ]; diff --git a/pleasanter/develop/#営業積算/■2_310407_Re②依頼票/sites/scripts/01_基本スクリプト.js b/pleasanter/develop/#営業積算/■2_310407_Re②依頼票/sites/scripts/01_基本スクリプト.js index b11cab02..809e2034 100644 --- a/pleasanter/develop/#営業積算/■2_310407_Re②依頼票/sites/scripts/01_基本スクリプト.js +++ b/pleasanter/develop/#営業積算/■2_310407_Re②依頼票/sites/scripts/01_基本スクリプト.js @@ -315,7 +315,9 @@ $p.ex.areaBrandName = function () { let brand = $('#Results_Class012 option:selected').text(); if (area && brand) { - $p.set($('#Results_ClassL'), area + ' ' + brand); + if ($('#Results_ClassL').val() == '') { + $p.set($('#Results_ClassL'), area + ' ' + brand); + } } } diff --git a/pleasanter/develop/#営業積算/■2_310407_Re②依頼票/sites/scripts/03_依頼項目タブ.js b/pleasanter/develop/#営業積算/■2_310407_Re②依頼票/sites/scripts/03_依頼項目タブ.js index c76672a3..2bc7b6a6 100644 --- a/pleasanter/develop/#営業積算/■2_310407_Re②依頼票/sites/scripts/03_依頼項目タブ.js +++ b/pleasanter/develop/#営業積算/■2_310407_Re②依頼票/sites/scripts/03_依頼項目タブ.js @@ -108,6 +108,8 @@ $p.ex.createIraiButton = function () { let allCount = $('#Results_Num051').val(); //合計項目数 const arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']; + let status = $('#Results_Status').val(); + //依頼項目追加ボタン for (i = 0; i < 9; i++) { let j = (i + 1).toString().padStart(3, '0'); @@ -127,7 +129,8 @@ $p.ex.createIraiButton = function () { $('#Results_Num0' + k + 'Field').after(div1); //全依頼数が10個以上の場合はボタン不可 - if (allCount >= 10) { + //登録済み以外の場合も不可 + if (allCount >= 10 || status !== '200') { $('#addButton0' + k).button({ icon: 'ui-icon-closethick', disabled: true diff --git a/pleasanter/develop/#営業積算/■2_310407_Re②依頼票/sites/scripts/999_汎用帳票出力スクリプト.js b/pleasanter/develop/#営業積算/■2_310407_Re②依頼票/sites/scripts/999_汎用帳票出力スクリプト.js index 486e43fc..ed7d5570 100644 --- a/pleasanter/develop/#営業積算/■2_310407_Re②依頼票/sites/scripts/999_汎用帳票出力スクリプト.js +++ b/pleasanter/develop/#営業積算/■2_310407_Re②依頼票/sites/scripts/999_汎用帳票出力スクリプト.js @@ -70,7 +70,15 @@ async function createReport(templateId, recordData = [], templateType = 'xlsx') let col = 2; let ResultIdList = []; let uniqueIdList = []; + let kanriNo = ''; + let customerName = ''; for (let record of recordData) { + //console.log('Processing record:', record); + //管理番号 + kanriNo = record['ClassA'] || 'YYX0000-ZZ'; + //顧客名 + customerName = record['Class001'] || '顧客名不明'; + Object.keys(record).forEach(function (key) { param = setValueToSheet(param, col, key, record[key]); if (key === 'ResultId') { @@ -93,7 +101,7 @@ async function createReport(templateId, recordData = [], templateType = 'xlsx') const sheet = workbook.sheet(i.toString()); if (sheet) { sheet.name(uniqueIdList[i - 1] || 'Report' + i); - sheet.cell('B45').value(ResultIdList[i - 1] || ''); //B44セルにResultIdをセット + sheet.cell('C46').value(ResultIdList[i - 1] || ''); //B44セルにResultIdをセット } } @@ -113,13 +121,14 @@ async function createReport(templateId, recordData = [], templateType = 'xlsx') const dateStr = now.getFullYear() + ('0' + (now.getMonth() + 1)).slice(-2) + ('0' + now.getDate()).slice(-2) + '_' + ('0' + now.getHours()).slice(-2) + ('0' + now.getMinutes()).slice(-2) + ('0' + now.getSeconds()).slice(-2); - let downloadFileName = templateName + '_' + dateStr + '.' + templateFile.Extension; + //let downloadFileName = templateName + '_' + dateStr + '.' + templateFile.Extension; + let downloadFileName = kanriNo + '-' + customerName + '■' + dateStr + '.' + templateFile.Extension; //PDF変換APIを呼び出す sendExcelAndSavePdf(base64data, downloadFileName) .then(pdfBlob => { // PDF Blobをダウンロード - saveAs(pdfBlob, downloadFileName.replace(/\.(xlsx|docx|pptx)$/, '.pdf')); + saveAs(pdfBlob, downloadFileName.replace(/\.(xlsx|docx|pptx)$/, 'pdf')); }); console.log('帳票出力が完了しました:', downloadFileName); $('#global-modal').remove(); diff --git a/pleasanter/develop/#営業積算/■2_310407_Re②依頼票/sites/scripts/99_更新履歴保存スクリプト.js b/pleasanter/develop/#営業積算/■2_310407_Re②依頼票/sites/scripts/99_更新履歴保存スクリプト.js index f8b91c44..0619419b 100644 --- a/pleasanter/develop/#営業積算/■2_310407_Re②依頼票/sites/scripts/99_更新履歴保存スクリプト.js +++ b/pleasanter/develop/#営業積算/■2_310407_Re②依頼票/sites/scripts/99_更新履歴保存スクリプト.js @@ -26,6 +26,43 @@ $p.ex.saveHistory = function () { 'Results_Class199', 'Results_Class200', 'Results_NumZ', + 'Results_Num001', + 'Results_Num002', + 'Results_Num003', + 'Results_Num004', + 'Results_Num005', + 'Results_Num006', + 'Results_Num007', + 'Results_Num008', + 'Results_Num009', + 'Results_Num011', + 'Results_Num012', + 'Results_Num013', + 'Results_Num014', + 'Results_Num015', + 'Results_Num016', + 'Results_Num017', + 'Results_Num018', + 'Results_Num019', + 'Results_Num021', + 'Results_Num022', + 'Results_Num023', + 'Results_Num024', + 'Results_Num025', + 'Results_Num026', + 'Results_Num027', + 'Results_Num028', + 'Results_Num029', + 'Results_Num051', + 'Results_Num052', + 'Results_Num053', + 'Results_Num054', + 'Results_Num055', + 'Results_Num056', + 'Results_Num057', + 'Results_Num058', + 'Results_Num059', + 'Results_Num060', 'Results_Description200' ]; diff --git a/pleasanter/develop/#営業積算/■3_310405_Re③依頼項目/sites/scripts/01_基本スクリプト.js b/pleasanter/develop/#営業積算/■3_310405_Re③依頼項目/sites/scripts/01_基本スクリプト.js index 9305ac9c..937a2b46 100644 --- a/pleasanter/develop/#営業積算/■3_310405_Re③依頼項目/sites/scripts/01_基本スクリプト.js +++ b/pleasanter/develop/#営業積算/■3_310405_Re③依頼項目/sites/scripts/01_基本スクリプト.js @@ -293,6 +293,8 @@ $p.ex.init = function () { } } + //エリア-ブランド結合 + $p.ex.areaBrandName(); } else { //スタートアップメッセージ表示 @@ -375,7 +377,6 @@ $p.ex.init = function () { } }); - //部材リストの非表示 //Results_CheckA のチェック状態を取得 if ($('#Results_CheckA').prop('checked')) { @@ -386,6 +387,96 @@ $p.ex.init = function () { $p.ex.changeColumnList(); } +$p.ex.changeCounter = function () { + let status = $('#Results_Status').val(); + + //ステータスごとにカウンター値を変更 + switch (status) { + case '100': //新規登録 + $p.ex.patternCounter('new', 1); + break; + case '200': //登録完了 + // 登録完了 + $p.ex.patternCounter('registered', 1); + break; + case '300': //積算依頼 + case '400': //積算受付 + case '450': //質疑対応中 + case '500': //積算対応中 + case '510': //外部見積待ち + case '520': //社内確認中 + case '700': //チェック中 + case '800': //積算回答 + break; + case '900': //完了 + case '901': //依頼不要 + case '910': //保留 + case '920': //取消 + $p.ex.patternCounter('completed', 1); + break; + } +} + +//patternCounter +$p.ex.patternCounter = function (mode, count) { + + //全項目一括非表示処理 + for (let i = 1; i <= 9; i++) { + $('#Results_Num0' + (70 + i) + 'Field').hide(); + $('#Results_Num0' + (80 + i) + 'Field').hide(); + $('#Results_Num0' + (90 + i) + 'Field').hide(); + } + + //パターンごとの番号 + let patternList = { + 'A': 1, + 'B': 2, + 'C': 3, + 'D': 4, + 'E': 5, + 'F': 6, + 'G': 7, + 'H': 8, + 'I': 9 + } + + //依頼項目のパターン割り出し + let pattern = $('#Results_Class041').val(); + + //番号取得 + let keyId = patternList[pattern]; + + let num1 = 70 + parseFloat(keyId); //新規作成Num番号 + let num2 = 80 + parseFloat(keyId); //登録完了Num番号 + let num3 = 90 + parseFloat(keyId); //依頼完了Num番号 + + //項目表示 + $('#Results_Num0' + num1 + 'Field').show(); + $('#Results_Num0' + num2 + 'Field').show(); + $('#Results_Num0' + num3 + 'Field').show(); + + + //値セット + switch (mode) { + case 'new': + if ($('#Results_Num0' + num1).val() != count) { + $p.set($('#Results_Num0' + num1), count);//新規作成 + } + break; + case 'registered': + if ($('#Results_Num0' + num2).val() != count) { + $p.set($('#Results_Num0' + num2), count);//登録完了 + } + break; + case 'completed': + if ($('#Results_Num0' + num3).val() != count) { + $p.set($('#Results_Num0' + num3), count);//依頼完了 + } + break; + } + +} + $p.ex.makerNothingFunction = function () { //ボタンを非表示 $('#makerNothingButton').hide(); @@ -666,8 +757,19 @@ $p.ex.areaBrandName = function () { let area = $('#Results_Class011 option:selected').text(); let brand = $('#Results_Class012 option:selected').text(); + //Class049 area + if ($('#Results_Class049').val() == '') { + $p.set($('#Results_Class049'), area); + } + //Class050 brand + if ($('#Results_Class050').val() == '') { + $p.set($('#Results_Class050'), brand); + } + if (area && brand) { - $p.set($('#Results_ClassL'), area + ' ' + brand); + if ($('#Results_ClassL').val() == '') { + $p.set($('#Results_ClassL'), area + ' ' + brand); + } } } @@ -800,3 +902,25 @@ $p.ex.getRecordData = async function (id) { return resData.Response.Data[0]; } + +/* +[ + { + "SiteId": 320587, + "SearchFormat": "[ClassI]-[ClassJ]-[ClassL]■[ClassV]-[ClassW]", + "View": { + "ColumnFilterExpressions": { + "ClassA": "[@Class045]", + "ClassB": "[@Class046]", + "ClassC": "[@Class047]", + "ClassD": "[@Class048]", + "ClassV": "[@Class049]", + "ClassW": "[@Class050]", + }, + "ColumnSorterHash": { + "Title": "asc" + } + }, + } +] +*/ diff --git a/pleasanter/develop/#営業積算/■3_310405_Re③依頼項目/sites/scripts/02_プロセス.js b/pleasanter/develop/#営業積算/■3_310405_Re③依頼項目/sites/scripts/02_プロセス.js index 3e87e3b3..b7b53842 100644 --- a/pleasanter/develop/#営業積算/■3_310405_Re③依頼項目/sites/scripts/02_プロセス.js +++ b/pleasanter/develop/#営業積算/■3_310405_Re③依頼項目/sites/scripts/02_プロセス.js @@ -99,6 +99,9 @@ $p.ex.processScript = function (procNum) { } + //プロセスカウンターの実行 + $p.ex.processCounter(procNum); + //プロセスの実行 console.log(`▶Process_${procNum} : ${procName} 処理終了`); $p.execProcess($('#Process_' + procNum)); @@ -137,4 +140,71 @@ $p.ex.processButtonControl = function () { } }); -} \ No newline at end of file +} + +//プロセスごとにカウンターの値を調整する処理 +$p.ex.processCounter = function (procNum) { + + switch (procNum) { + case '1': //質疑送信 + case '2': //回答送信 + case '3': //回答確認 + case '4': //見積回答削除 + $p.ex.countSet(['54', '55']); + break; + case '5': //登録完了 + + break; + case '6': //積算依頼 + $p.ex.countSet(['54']); + break; + case '7': //積算受付 + case '8': //積算対応 + case '9': //外部見積 + case '10': //社内確認 + case '11': //チェック + $p.ex.countSet(['54', '56']); + break; + case '12': //差戻し + $p.ex.countSet(['53', '54']); + break; + case '13': //積算回答 + case '14': //完了 + $p.ex.countSet(['54', '57']); + break; + case '15': //保留 + case '17': //e保留 + $p.ex.countSet(['54', '58']); + break; + case '16': //取消 + case '18': //e取消 + $p.ex.countSet(['54', '59']); + break; + case '19': //依頼不要 + $p.ex.countSet(['54', '60']); + break; + case '20': //再依頼 + + break; + } + +} + +//ステータス別カウント設定処理 +$p.ex.countSet = function (target = []) { + + //初期化 対象項目をすべて0に設定 + for (c = 53; c <= 60; c++) { + // カウント処理 + let column = '0' + c; + $p.set($('#Results_Num' + column), 0); + } + + //指定項目のみ1に設定 + for (c of target) { + let column = '0' + c; + // カウント処理 + $p.set($('#Results_Num' + column), 1); + } + +} diff --git a/pleasanter/develop/#営業積算/■3_310405_Re③依頼項目/sites/scripts/90_スタートメッセージ表示.js b/pleasanter/develop/#営業積算/■3_310405_Re③依頼項目/sites/scripts/90_スタートメッセージ表示.js index b5d7801d..7dcbb116 100644 --- a/pleasanter/develop/#営業積算/■3_310405_Re③依頼項目/sites/scripts/90_スタートメッセージ表示.js +++ b/pleasanter/develop/#営業積算/■3_310405_Re③依頼項目/sites/scripts/90_スタートメッセージ表示.js @@ -10,6 +10,7 @@ //スタートアップメッセージ表示 $p.ex.startupMessage = function () { + let count = 0; for (message of messageData) { //2つ目以降のメッセージの際にクリアフラグを0に設定。 @@ -24,6 +25,7 @@ $p.ex.startupMessage = function () { case '100': //新規登録 break; case '200': //登録完了 + $p.ex.popupMessage(); break; case '300': //積算依頼 break; @@ -41,3 +43,49 @@ $p.ex.startupMessage = function () { break; } } + +$p.ex.popupMessage = function () { + let message = document.createElement('pre'); + message.textContent = "この依頼項目は登録済みです。Re②依頼票へ戻り、新しい依頼項目を登録するか、\n積算依頼を行ってください。ここをクリックするとRe②依頼票へ戻ります。"; + + // メッセージウインドウを作成 + let popup = document.createElement('div'); + popup.className = '#custom-fixed-popup'; + + // バツボタンを作成 + let closeBtn = document.createElement('button'); + closeBtn.textContent = '×'; + closeBtn.style.position = 'absolute'; + closeBtn.style.top = '0px'; + closeBtn.style.right = '0px'; + closeBtn.style.background = 'transparent'; + closeBtn.style.border = 'none'; + closeBtn.style.fontSize = '20px'; + closeBtn.style.cursor = 'pointer'; + + closeBtn.onclick = function (e) { + e.stopPropagation(); + popup.remove(); + }; + + // クリックで指定URLにジャンプ + popup.onclick = function () { + let parentId = $('#Results_ClassW').val(); + if (location.hostname) { + window.location.href = location.protocol + '//' + location.hostname + '/pleasanter/items/' + parentId; + return; + } + }; + + // 既存の同種ウインドウがあれば削除 + let oldPopup = document.getElementById('custom-fixed-popup'); + if (oldPopup) oldPopup.remove(); + popup.id = 'custom-fixed-popup'; + + // ポジション調整 + + popup.appendChild(closeBtn); + popup.appendChild(message); + + document.body.appendChild(popup); +} \ No newline at end of file diff --git a/pleasanter/develop/#営業積算/■3_310405_Re③依頼項目/sites/scripts/99_更新履歴保存スクリプト.js b/pleasanter/develop/#営業積算/■3_310405_Re③依頼項目/sites/scripts/99_更新履歴保存スクリプト.js index cf94af38..48cd207d 100644 --- a/pleasanter/develop/#営業積算/■3_310405_Re③依頼項目/sites/scripts/99_更新履歴保存スクリプト.js +++ b/pleasanter/develop/#営業積算/■3_310405_Re③依頼項目/sites/scripts/99_更新履歴保存スクリプト.js @@ -61,6 +61,40 @@ $p.ex.saveHistory = function () { 'Results_Num051', 'Results_Num052', 'Results_Num053', + 'Results_Num054', + 'Results_Num055', + 'Results_Num056', + 'Results_Num057', + 'Results_Num058', + 'Results_Num059', + 'Results_Num060', + 'Results_Num071', + 'Results_Num072', + 'Results_Num073', + 'Results_Num074', + 'Results_Num075', + 'Results_Num076', + 'Results_Num077', + 'Results_Num078', + 'Results_Num079', + 'Results_Num081', + 'Results_Num082', + 'Results_Num083', + 'Results_Num084', + 'Results_Num085', + 'Results_Num086', + 'Results_Num087', + 'Results_Num088', + 'Results_Num089', + 'Results_Num091', + 'Results_Num092', + 'Results_Num093', + 'Results_Num094', + 'Results_Num095', + 'Results_Num096', + 'Results_Num097', + 'Results_Num098', + 'Results_Num099', 'Results_Description200' ]; diff --git a/pleasanter/develop/#営業積算/■3_310405_Re③依頼項目/sites/styles/05_項目のサイズ変更.css b/pleasanter/develop/#営業積算/■3_310405_Re③依頼項目/sites/styles/05_項目のサイズ変更.css index 333f6781..2f502c8d 100644 --- a/pleasanter/develop/#営業積算/■3_310405_Re③依頼項目/sites/styles/05_項目のサイズ変更.css +++ b/pleasanter/develop/#営業積算/■3_310405_Re③依頼項目/sites/styles/05_項目のサイズ変更.css @@ -190,4 +190,20 @@ p.field-label:has(label[for="Results_Description057"]) { #makerNothingButton { font-weight: bold; font-size: 1.5em; +} + +#custom-fixed-popup { + position: fixed; + top: 50px; + right: 50px; + left: unset; + background: #961414ff; + color: #ffffffff; + font-size: 1.3em; + padding: 8px 16px; + border: 2px solid #000000ff; + border-radius: 8px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); + z-index: 9999; + cursor: pointer; } \ No newline at end of file diff --git a/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/connectionSetting/next999.json b/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/connectionSetting/next999.json new file mode 100644 index 00000000..aeb831e2 --- /dev/null +++ b/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/connectionSetting/next999.json @@ -0,0 +1,4 @@ +{ + "apiKey": "c38903157cbffc30961f50bc29d0991a6cd8af495ab3009b05c5f98e82b2e61b94ba2d5c0a48fc518b1cd74c9e427b01051a228f670f3c5282544dfbec93db87", + "url": "https://neo999.next-hd.net/pleasanter/" +} \ No newline at end of file diff --git a/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/scripts/01_メインスクリプト.js b/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/scripts/01_メインスクリプト.js new file mode 100644 index 00000000..b7d2c7c3 --- /dev/null +++ b/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/scripts/01_メインスクリプト.js @@ -0,0 +1,241 @@ +/* +@config : next999.json +@filename : ${psFileBasename} +@title : 01_メインスクリプト +@name : +@siteIds : 335018 +@siteTitles : Re①基本情報 +@disabled: false +*/ +let pageLoading = 0; +let apiKey = '6504c8a807677a3a576e10327f3c19876c55736ee45d4a845796b9e7f5e087bfd4bd0d8184863da8cf1733ca635111432ab334aea59102b06a96ee6d2c05190d'; + +//メッセージデータ +let messageData = JSON.parse($('#messageData').val() || '[]'); + +//エリアデータ +let areaData = JSON.parse($('#areaData').val() || '[]'); + +//ブランドデータ +let brandData = JSON.parse($('#brandData').val() || '[]'); + +//---------------------------------------------------------------------- +//初期処理 +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...'); + //初期化 + + //新規作成時のみ処理 + switch ($p.action()) { + //新規作成時の処理 + case 'new': + console.log('新規作成時の処理'); + //年度保存 + $p.ex.saveYearCode(); + + break; + //編集時の処理 + case 'edit': + console.log('編集時の処理'); + //スタートアップメッセージ表示 + $p.ex.startupMessage(); + + break; + } + + console.log('共通処理'); + + //プロセスボタン調整 + $p.ex.processButtonControl(); + + //読取専用項目のTab移動抑制処理 + $('.code-readonly2 input').prop('tabindex', '-1'); + $('.code-readonly2 select').prop('tabindex', '-1'); + +} + +//入力チェック後処理 +$p.events.after_validate = function (args) { + //エリア-ブランド結合 + $p.ex.areaBrandName(); + //施主名 姓名結合 + $p.ex.setCustomerName(); + //担当者一覧マージ + $p.ex.usersMarge1(); + //CC一覧マージ + $p.ex.usersMarge2(); + //担当者・CC一覧マージ + $p.ex.usersMarge3(); + + + //変更履歴の保存 + $p.ex.saveHistory(); +} + +//画面更新後 +$p.events.after_set_Update = function (args) { + console.log('画面更新後'); + //プロセスボタン調整 + $p.ex.processButtonControl(); + + //一時保存メッセージ + let json8val = JSON.parse(args.json[8].Value); + if (json8val.Id == 'Updated') { + $p.ex.setMyMessage('new-status-light-lime', '基本情報の内容が一時保存されました'); + } +} +//---------------------------------------------------------------------- + +//年度・四半期の保存 +$p.ex.saveYearCode = function () { + let now = new Date(); + let year = parseFloat(now.getFullYear()) - 2000; + let month = now.getMonth() + 1; + let code; + //年保存 + $p.set($('#Results_ClassE'), year); + + //四半期記号 + switch (month) { + case 1: + case 2: + case 3: + code = 'A'; + break; + case 4: + case 5: + case 6: + code = 'B'; + break; + case 7: + case 8: + case 9: + code = 'C'; + break; + case 10: + case 11: + case 12: + code = 'D'; + break; + } + $p.set($('#Results_ClassF'), code); //四半期表示 + $p.set($('#Results_ClassG'), code); //四半期記号 + +} + +//施主名 姓名結合 +$p.ex.setCustomerName = function () { + let firstName = $('#Results_Class001').val(); + let lastName = $('#Results_Class002').val(); + let customerName = firstName + ' ' + lastName + ' 様'; + $p.set($('#Results_ClassS'), customerName); + + //let eigyo = $('#Results_Class022').text(); + let area = $('#Results_Class011 option:selected').text(); + + //施主名+エリア名を重複チェックフラグに格納 + let flagData = firstName + lastName + '■' + area; + + $p.set($('#Results_Class200'), flagData); + +} + +//エリアとブランド名を合体させて格納する +$p.ex.areaBrandName = function () { + //エリア名とブランド名を結合して格納 + let area = $('#Results_Class011 option:selected').text(); + let brand = $('#Results_Class012 option:selected').text(); + + if (area && brand) { + if ($('#Results_ClassT').val() == '') { + $p.set($('#Results_ClassT'), area + ' ' + brand); + } + } + + //エリアコード・ブランドコードを取得して格納 + let areaId = $('#Results_Class011').val(); + let brandId = $('#Results_Class012').val(); + + let areaCode = areaData[areaId].areaCode; + let brandCode = brandData[brandId].brandCode; + + if (areaCode && brandCode) { + $p.set($('#Results_ClassU'), areaCode); + $p.set($('#Results_ClassV'), brandCode); + } + +} + +//担当者一覧マージ +$p.ex.usersMarge1 = function () { + let users = []; + $('#Results_Class022').val() && users.push($('#Results_Class022').val()); //主担当営業 Class022 + $('#Results_Class023').val() && users.push($('#Results_Class023').val()); //副担当営業 Class023 + $('#Results_Class024').val() && users.push($('#Results_Class024').val()); //営業設計 Class024 + $('#Results_Class025').val() && users.push($('#Results_Class025').val()); //担当監督 Class025 + $('#Results_Class026').val() && users.push($('#Results_Class026').val()); //担当IC Class026 + $('#Results_Class027').val() && users.push($('#Results_Class027').val()); //管理設計 Class027 + $('#Results_Class028').val() && users.push($('#Results_Class028').val()); //所属長 Class028 + + $p.set($('#Results_Class031'), JSON.stringify(users)); +} + +//CC一覧マージ +$p.ex.usersMarge2 = function () { + let users = []; + $('#Results_Class041').val() && users.push($('#Results_Class041').val()); //CC1 + $('#Results_Class042').val() && users.push($('#Results_Class042').val()); //CC2 + $('#Results_Class043').val() && users.push($('#Results_Class043').val()); //CC3 + $('#Results_Class044').val() && users.push($('#Results_Class044').val()); //CC4 + + $p.set($('#Results_Class032'), JSON.stringify(users)); +} + +//担当者・CC一覧マージ +$p.ex.usersMarge3 = function () { + //担当者一覧とCC一覧をマージして保管 + let mergeAry = [...$('#Results_Class031').val(), ...$('#Results_Class032').val()]; + //入力者追加 + mergeAry.push($('#Results_ClassB').val()); + $p.set($('#Results_Class033'), JSON.stringify(mergeAry)); + +} + +/** + * 指定したIDのタグのID + */ +function addPlaceholderOption(selectId) { + //値が空の場合、プレースホルダー的なoptionを追加 + const val = $(`#${selectId}`).val(); + if (!val) { + //1つ目のoptionのテキストを変更 + $(`#${selectId} option:first`).text('次から選択してください'); + + } + //console.log($(`#${selectId}`)); +} \ No newline at end of file diff --git a/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/scripts/02_MSSデータ処理.js b/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/scripts/02_MSSデータ処理.js new file mode 100644 index 00000000..0598566f --- /dev/null +++ b/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/scripts/02_MSSデータ処理.js @@ -0,0 +1,50 @@ +/* +@config : next999.json +@filename : ${psFileBasename} +@title : 02_MSSデータ処理 +@name : +@siteIds : 335018 +@siteTitles : Re①基本情報 +@disabled: false +*/ + + +//MSSからの引用データをクリア +$p.ex.clearMSSData = function () { + console.log('Clear MSS Data'); + + $p.set($('#Results_ClassN'), '0'); //案件状況 + $p.set($('#Results_ClassO'), ''); //契約コード + + $p.set($('#Results_Class001'), ''); //施主・姓 + $p.set($('#Results_Class002'), ''); //施主・名 + $p.set($('#Results_Class003'), ''); //施主・姓(カナ) + $p.set($('#Results_Class004'), ''); //施主・名(カナ) + $p.set($('#Results_Class005'), ''); //連名 + $p.set($('#Results_Class006'), ''); //連名(カナ) + + $p.set($('#Results_Class010'), ''); //建上地 + $p.set($('#Results_Class011'), ''); //エリア + $p.set($('#Results_Class012'), ''); //契約ブランド + $p.set($('#Results_Class013'), ''); //防火指定 + $p.set($('#Results_Class014'), ''); //建物種類 + + $p.set($('#Results_ClassS'), ''); //施主名 + $p.set($('#Results_ClassT'), ''); //エリアブランド + $p.set($('#Results_ClassU'), ''); //エリア記号 + $p.set($('#Results_ClassV'), ''); //ブランド記号 + + $p.set($('#Results_Class021'), ''); //契約営業所 + $p.set($('#Results_Class022'), ''); //主担当営業 + $p.set($('#Results_Class023'), ''); //副担当営業 + $p.set($('#Results_Class024'), ''); //営業設計 + $p.set($('#Results_Class025'), ''); //担当監督 + $p.set($('#Results_Class026'), ''); //担当IC + $p.set($('#Results_Class027'), ''); //管理設計 + $p.set($('#Results_Class028'), ''); //所属長 + + $p.set($('#Results_Date001'), ''); //承認図予定日 + $p.set($('#Results_Date002'), ''); //着工予定日 + +} + diff --git a/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/scripts/03_プロセス関連処理.js b/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/scripts/03_プロセス関連処理.js new file mode 100644 index 00000000..83ff6b05 --- /dev/null +++ b/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/scripts/03_プロセス関連処理.js @@ -0,0 +1,55 @@ +/* +@config : next999.json +@filename : ${psFileBasename} +@title : 03_プロセス関連処理 +@name : +@siteIds : 335018 +@siteTitles : Re①基本情報 +@disabled: false +*/ + +//プロセスボタン調整 +$p.ex.processButtonControl = function () { + console.log('プロセスボタン調整'); + + $("button[id^='Process']").each(function () { + //close アイコンのボタンは非表示 + if ($(this).attr('data-icon') == 'ui-icon-close') { + $(this).hide(); + } + + //ui-icon-cancel アイコンのボタンはグレーアウト + if ($(this).attr('data-icon') == 'ui-icon-cancel') { + //グレーアウト + $(this).addClass('new-status-grey'); + + } else { + //その他のボタンはサイズ拡大 + $(this).addClass('processButtonSize'); + } + + //個別設定 + switch (this.id) { + case 'Process_1': //登録完了 + break; + case 'Process_2': //依頼終了 + break; + case 'Process_3': //保留 + break; + case 'Process_4': //取消 + break; + case 'Process_5': //依頼票登録 + break; + case 'Process_6': //案件復帰 + break; + case 'Process_7': //保留(営業積算) + break; + case 'Process_8': //取消(営業積算) + break; + case 'Process_9': //案件復帰(営業積算) + break; + + } + + }); +} diff --git a/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/scripts/04_見積依頼処理.js b/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/scripts/04_見積依頼処理.js new file mode 100644 index 00000000..524c4200 --- /dev/null +++ b/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/scripts/04_見積依頼処理.js @@ -0,0 +1,9 @@ +/* +@config : next999.json +@filename : ${psFileBasename} +@title : 04_見積依頼処理 +@name : +@siteIds : 335018 +@siteTitles : Re①基本情報 +@disabled: false +*/ diff --git a/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/scripts/90_スタートメッセージ表示.js b/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/scripts/90_スタートメッセージ表示.js new file mode 100644 index 00000000..f4de72fa --- /dev/null +++ b/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/scripts/90_スタートメッセージ表示.js @@ -0,0 +1,33 @@ +/* +@config : next999.json +@filename : ${psFileBasename} +@title : 90_スタートメッセージ表示 +@name : +@siteIds : 335018 +@siteTitles : Re①基本情報 +@disabled: false +*/ + +//スタートアップメッセージ表示 +$p.ex.startupMessage = function () { + let count = 0; + for (message of messageData) { + let clearFlag = 0; + $p.ex.setMyMessage(message.colorCode, message.message, clearFlag); + count++; + } + + //開いたときにステータスごとに処理 + switch ($('#Results_Status').val()) { + case '100': //新規登録 + break; + case '200': //登録完了 + break; + case '900': //依頼終了 + break; + case '910': //保留 + break; + case '920': //取消 + break; + } +} diff --git a/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/scripts/99_更新履歴保存スクリプト.js b/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/scripts/99_更新履歴保存スクリプト.js new file mode 100644 index 00000000..f8f7f480 --- /dev/null +++ b/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/scripts/99_更新履歴保存スクリプト.js @@ -0,0 +1,74 @@ +/* +@config : next999.json +@filename : ${psFileBasename} +@title : 99_更新履歴保存スクリプト +@name : +@siteIds : 335018 +@siteTitles : Re①基本情報 +@disabled: false +*/ + +//変更内容を保存 +$p.ex.saveHistory = function () { + let history = ''; + let count = 0; + + //履歴に表示しない項目リスト + let excludeList = [ + 'Results_Timestamp', + 'Results_ClassE', + 'Results_ClassF', + 'Results_ClassG', + + 'Results_ClassS', + 'Results_ClassT', + 'Results_ClassU', + 'Results_ClassV', + + 'Results_Class031', + 'Results_Class032', + 'Results_Class033', + + 'Results_Class200', + 'Results_Description200' + ]; + + if ($p.data.MainForm) { + $p.set($('#Results_Description200'), ''); + + history = '◆ 変更内容 ◆\n'; + $.each($p.data.MainForm, function (index, val) { + if (index.startsWith('Results')) { + if (!excludeList.includes(index)) { + //項目名の取得 + let colName = $('label[for="' + index + '"]').text(); + let text; + //セレクトボックス判定 + if ($('#' + index + '.control-dropdown').length) { + //セレクトボックス処理 + if ($('#' + index).prop("multiple")) { + text = $('#' + index + '_ms span').eq(-1).text(); + } else { + text = $('#' + index + ' option:selected').text(); + } + } else if ($('#' + index + '.radio-value').length) { + //ラジオボタン処理 + text = val != '' ? $('label[for="' + index + val + '"').text() : ''; + } else { + //その他 + text = val; + } + + history += '▷ ' + colName + ' : ' + text + '\n'; + count++; + } + } + }); + + if (count) { + //console.log(history); + $p.set($('#Results_Description200'), history); + $p.set($('#Comments'), history); + } + } +} diff --git a/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/serverscripts/01_メッセージデータ取得.js b/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/serverscripts/01_メッセージデータ取得.js new file mode 100644 index 00000000..4ed78760 --- /dev/null +++ b/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/serverscripts/01_メッセージデータ取得.js @@ -0,0 +1,66 @@ +/* +@config :next999.json +@filename : ${psFileBasename} +@title :01_メッセージデータ取得 +@name :01_メッセージデータ取得 +@siteIds : 335018 +@siteTitles : Re①基本情報 +@disabled: false +*/ +try { + //メッセージデータ取得 + getMessageData(); + + //エリアデータ取得 + getAreaTable(); + + //ブランドデータ取得 + getBrandTable(); + +} catch (error) { + context.Log(error); +} + +//メッセージデータ取得 +function getMessageData() { + //メッセージデータを取得 + let data = { + "View": { + "ColumnFilterHash": { + "ClassA": "[\"" + model.SiteId + "\"]", + "ClassB": model.Status + }, + "ColumnSorterHash": { + "ClassA": "asc", + "ClassB": "asc", + "NumA": "asc" + } + } + } + + let results = items.Get(326371, JSON.stringify(data)); + if (results.Length === 0) { + context.Log('メッセージデータが見つかりませんでした。'); + return; + } + + let messageData = [] + for (let item of results) { + const status = item.ClassB; + const colorCode = item.ClassC; + const message = item.ClassD; + messageData.push({ + "status": status, + "colorCode": colorCode, + "message": message, + }); + } + + //取得したメッセージデータをhiddenに格納 + if (messageData.Length > 0) { + hidden.Add('messageData', JSON.stringify(messageData)); + } else { + context.Log('メッセージデータが見つかりませんでした。'); + } + +} \ No newline at end of file diff --git a/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/serverscripts/02_マスターデータ取得.js b/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/serverscripts/02_マスターデータ取得.js new file mode 100644 index 00000000..a0b01616 --- /dev/null +++ b/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/serverscripts/02_マスターデータ取得.js @@ -0,0 +1,71 @@ +/* +@config :next999.json +@filename : ${psFileBasename} +@title :02_マスターデータ取得 +@name :02_マスターデータ取得 +@siteIds : 335018 +@siteTitles : Re①基本情報 +@disabled: false +*/ + +//エリアテーブルからデータを取得 +function getAreaTable() { + //エリアテーブルからデータを取得 + let results = items.Get(210699); + if (results.Length === 0) { + context.Log('エリアデータが見つかりませんでした。1'); + return; + } + + let areaData = {}; + let count = 0; + for (let item of results) { + const areaId = item.ResultId; + const areaName = item.Title; + const areaCode = item.ClassA; + areaData[areaId] = { + "areaId": areaId, + "areaName": areaName, + "areaCode": areaCode, + }; + count++; + } + + //取得したエリアデータをhiddenに格納 + if (count > 0) { + hidden.Add('areaData', JSON.stringify(areaData)); + } else { + context.Log('エリアデータが見つかりませんでした。2'); + } +} + +//ブランドテーブルからデータを取得 +function getBrandTable() { + //ブランドテーブルからデータを取得 + let results = items.Get(109100); + if (results.Length === 0) { + context.Log('ブランドデータが見つかりませんでした。1'); + return; + } + + let brandData = {}; + let count = 0; + for (let item of results) { + const brandId = item.ResultId; + const brandName = item.Title; + const brandCode = item.ClassA; + brandData[brandId] = { + "brandId": brandId, + "brandName": brandName, + "brandCode": brandCode, + }; + count++; + } + + //取得したエリアデータをhiddenに格納 + if (count > 0) { + hidden.Add('brandData', JSON.stringify(brandData)); + } else { + context.Log('ブランドデータが見つかりませんでした。2'); + } +} \ No newline at end of file diff --git a/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/styles/01_読み取り専用スタイル.css b/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/styles/01_読み取り専用スタイル.css new file mode 100644 index 00000000..da9ca4d8 --- /dev/null +++ b/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/styles/01_読み取り専用スタイル.css @@ -0,0 +1,137 @@ +/* +@config : next999.json +@filename : ${psFileBasename} +@title : 01_読み取り専用スタイル +@name : +@siteIds : 335018 +@siteTitles : Re①基本情報 +@disabled: false +*/ +label.error { + pointer-events: none; + z-index: 100; + border-top: none !important; +} + +.code-readonly { + pointer-events: none; + background-color: lightgrey; + font-weight: bold; +} + +.code-readonly2, +.code-readonly2+button, +.code-readonly2+div.ui-icon, +.code-readonly3, +.code-readonly3+button, +.code-readonly3+div.ui-icon { + font-weight: bold; + + &:active { + pointer-events: none; + } + + a:not(.ui-spinner-button) { + pointer-events: auto; + } + +} + +.code-readonly2 select, +.code-readonly2 input, +.code-readonly2 button.ui-multiselect, +.code-readonly2 .control-markup, +.code-readonly2 .ui-spinner, +span[data-readonly="1"] { + pointer-events: none; + + border: dashed 1px black; + background-color: lightgray !important; + color: black !important; + + .ui-spinner-input { + border: none; + } +} + +.code-readonly3 select, +.code-readonly3 input, +.code-readonly3 button.ui-multiselect, +.code-readonly3 .control-markup, +.code-readonly3 .ui-spinner { + pointer-events: none; + + border: dashed 1px black; + + .ui-spinner-input { + border: none; + } +} + +/*読取り専用のツールチップ*/ +.code-readonly2, +.code-readonly3, +.field-normal:has(span[data-readonly="1"]), +.field-wide:has(span[data-readonly="1"]) { + position: relative; + + &:hover::after { + content: "読取り専用です"; + position: absolute; + left: 120px; + top: calc(100% - 9px); + margin-top: 4px; + background: #00000080; + color: #fff; + padding: 4px 10px; + border-radius: 4px; + font-size: 12px; + font-weight: normal !important; + pointer-events: none; + z-index: 9999; + white-space: nowrap; + } +} + +/*入力必須項目の強調表示*/ +.code-required, +select[data-validate-required="1"], +input[data-validate-required="1"] { + border: double 3px #ff0000 !important; + + &+button.ui-multiselect { + border: double 3px #ff0000 !important; + } + +} + +/*入力必須のツールチップ*/ +.field-normal:has(.code-required), +.field-wide:has(.code-required), +.field-normal:has(select[data-validate-required="1"]), +.field-wide:has(select[data-validate-required="1"]), +.field-normal:has(input[data-validate-required="1"]), +.field-wide:has(input[data-validate-required="1"]) { + position: relative; + + &:hover::after { + content: "入力必須です"; + position: absolute; + left: 120px; + top: calc(100% - 9px); + margin-top: 4px; + background: #ff000080; + color: #fff; + padding: 4px 10px; + border-radius: 4px; + font-size: 12px; + font-weight: normal !important; + pointer-events: none; + z-index: 9999; + white-space: nowrap; + } +} + +.error { + border: double 3px red !important; +} \ No newline at end of file diff --git a/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/styles/02_共通スタイル.css b/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/styles/02_共通スタイル.css new file mode 100644 index 00000000..7fb9da91 --- /dev/null +++ b/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/styles/02_共通スタイル.css @@ -0,0 +1,30 @@ +/* +@config : next999.json +@filename : ${psFileBasename} +@title : 02_共通スタイル +@name : +@siteIds : 335018 +@siteTitles : Re①基本情報 +@disabled: false +*/ +/*見出しサイズ*/ +.field-section { + font-size: 1.5em !important; + font-weight: bold !important; + height: auto; +} + +/*項目の後ろの行間を少し狭める*/ +.field-normal { + height: 35px; +} + +.field-wide { + min-height: 35px; + padding: 0 10px 5px 0; +} + +/*コメントのある項目の高さだけ少し広げる*/ +div:has(.commentAdd).field-normal { + height: 50px; +} \ No newline at end of file diff --git a/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/styles/03_プロセスボタンの変更.css b/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/styles/03_プロセスボタンの変更.css new file mode 100644 index 00000000..356a8aef --- /dev/null +++ b/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/styles/03_プロセスボタンの変更.css @@ -0,0 +1,33 @@ +/* +@config : next999.json +@filename : ${psFileBasename} +@title : 03_プロセスボタンの変更 +@name : +@siteIds : 335018 +@siteTitles : Re①基本情報 +@disabled: false +*/ + +.processButtonSize { + font-size: 1.5em !important; + font-weight: bold !important; + border: 2px solid black !important; +} + +/*新規作成ボタン*/ +#CreateCommand { + font-size: 1.5em !important; + font-weight: bold !important; + background: blue !important; + color: white !important; + border: 2px solid black !important; +} + +#Process_1 { + background: limegreen !important; + color: black !important; +} + +#UpdateCommand { + display: none !important; +} \ No newline at end of file diff --git a/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/styles/04_個別表示調整処理.css b/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/styles/04_個別表示調整処理.css new file mode 100644 index 00000000..2afeb1d2 --- /dev/null +++ b/pleasanter/develop/#営業積算v3/■1_335018_Re①基本情報/sites/styles/04_個別表示調整処理.css @@ -0,0 +1,17 @@ +/* +@config : next999.json +@filename : ${psFileBasename} +@title : 04_個別表示調整処理 +@name : +@siteIds : 335018 +@siteTitles : Re①基本情報 +@disabled: false +*/ + +/*管理番号*/ +#Results_ClassA, +label[for="Results_ClassA"] { + font-size: 1.5em !important; + font-weight: bold !important; + height: 2.2em !important; +} \ No newline at end of file diff --git a/pleasanter/develop/#営業積算v3/■2_335019_Re②見積依頼/connectionSetting/next999.json b/pleasanter/develop/#営業積算v3/■2_335019_Re②見積依頼/connectionSetting/next999.json new file mode 100644 index 00000000..aeb831e2 --- /dev/null +++ b/pleasanter/develop/#営業積算v3/■2_335019_Re②見積依頼/connectionSetting/next999.json @@ -0,0 +1,4 @@ +{ + "apiKey": "c38903157cbffc30961f50bc29d0991a6cd8af495ab3009b05c5f98e82b2e61b94ba2d5c0a48fc518b1cd74c9e427b01051a228f670f3c5282544dfbec93db87", + "url": "https://neo999.next-hd.net/pleasanter/" +} \ No newline at end of file diff --git a/pleasanter/develop/新・稟議申請システム/■1_新・稟議申請書/sites/scripts/2.稟議申請_作成時処理など.js b/pleasanter/develop/新・稟議申請システム/■1_新・稟議申請書/sites/scripts/2.稟議申請_作成時処理など.js index 6847ee97..2f851c63 100644 --- a/pleasanter/develop/新・稟議申請システム/■1_新・稟議申請書/sites/scripts/2.稟議申請_作成時処理など.js +++ b/pleasanter/develop/新・稟議申請システム/■1_新・稟議申請書/sites/scripts/2.稟議申請_作成時処理など.js @@ -338,6 +338,11 @@ $p.ex.processScript = function (procNum) { } } break; + case '17': + console.log('Process_' + procNum + ' Activate'); + $p.ex.getMyData(); // 自身のデータを取得し、ISO管理へデータを控えを送る処理 + $p.execProcess($('#Process_' + procNum)); + break; //default --------------------------------- default: flag = false; diff --git a/pleasanter/develop/新・稟議申請システム/■2_【ISO】稟議管理/sites/scripts/1.ISO稟議管理スクリプト.js b/pleasanter/develop/新・稟議申請システム/■2_【ISO】稟議管理/sites/scripts/1.ISO稟議管理スクリプト.js index 37df9b1a..6239c9db 100644 --- a/pleasanter/develop/新・稟議申請システム/■2_【ISO】稟議管理/sites/scripts/1.ISO稟議管理スクリプト.js +++ b/pleasanter/develop/新・稟議申請システム/■2_【ISO】稟議管理/sites/scripts/1.ISO稟議管理スクリプト.js @@ -67,33 +67,33 @@ $p.events.before_set_Update = function () { //MSSの危険負担費の更新 //稟議集計テーブルへのデータ計上 - } - $p.ex.chechMembers = function () { - //②以降 部署が空欄の場合は社員を空欄に変更 - $('#Results_Class142').val() == '' && $p.set($('#Results_Class152'), ''); - $('#Results_Class143').val() == '' && $p.set($('#Results_Class153'), ''); - $('#Results_Class144').val() == '' && $p.set($('#Results_Class154'), ''); - $('#Results_Class145').val() == '' && $p.set($('#Results_Class155'), ''); - $('#Results_Class146').val() == '' && $p.set($('#Results_Class156'), ''); - $('#Results_Class147').val() == '' && $p.set($('#Results_Class157'), ''); - $('#Results_Class148').val() == '' && $p.set($('#Results_Class158'), ''); - $('#Results_Class149').val() == '' && $p.set($('#Results_Class159'), ''); - $('#Results_Class150').val() == '' && $p.set($('#Results_Class160'), ''); + if ($('#Results_Class142').attr('data-readonly') != '1') { + //②以降 部署が空欄の場合は社員を空欄に変更 + $('#Results_Class142').val() == '' && $p.set($('#Results_Class152'), ''); + $('#Results_Class143').val() == '' && $p.set($('#Results_Class153'), ''); + $('#Results_Class144').val() == '' && $p.set($('#Results_Class154'), ''); + $('#Results_Class145').val() == '' && $p.set($('#Results_Class155'), ''); + $('#Results_Class146').val() == '' && $p.set($('#Results_Class156'), ''); + $('#Results_Class147').val() == '' && $p.set($('#Results_Class157'), ''); + $('#Results_Class148').val() == '' && $p.set($('#Results_Class158'), ''); + $('#Results_Class149').val() == '' && $p.set($('#Results_Class159'), ''); + $('#Results_Class150').val() == '' && $p.set($('#Results_Class160'), ''); - //②以降 社員が空欄の場合は部署を空欄に変更 - $('#Results_Class152').val() == '' && $p.set($('#Results_Class142'), ''); - $('#Results_Class153').val() == '' && $p.set($('#Results_Class143'), ''); - $('#Results_Class154').val() == '' && $p.set($('#Results_Class144'), ''); - $('#Results_Class155').val() == '' && $p.set($('#Results_Class145'), ''); - $('#Results_Class156').val() == '' && $p.set($('#Results_Class146'), ''); - $('#Results_Class157').val() == '' && $p.set($('#Results_Class147'), ''); - $('#Results_Class158').val() == '' && $p.set($('#Results_Class148'), ''); - $('#Results_Class159').val() == '' && $p.set($('#Results_Class149'), ''); - $('#Results_Class160').val() == '' && $p.set($('#Results_Class150'), ''); + //②以降 社員が空欄の場合は部署を空欄に変更 + $('#Results_Class152').val() == '' && $p.set($('#Results_Class142'), ''); + $('#Results_Class153').val() == '' && $p.set($('#Results_Class143'), ''); + $('#Results_Class154').val() == '' && $p.set($('#Results_Class144'), ''); + $('#Results_Class155').val() == '' && $p.set($('#Results_Class145'), ''); + $('#Results_Class156').val() == '' && $p.set($('#Results_Class146'), ''); + $('#Results_Class157').val() == '' && $p.set($('#Results_Class147'), ''); + $('#Results_Class158').val() == '' && $p.set($('#Results_Class148'), ''); + $('#Results_Class159').val() == '' && $p.set($('#Results_Class149'), ''); + $('#Results_Class160').val() == '' && $p.set($('#Results_Class150'), ''); + } return true; @@ -103,16 +103,31 @@ $p.ex.calcMoney = function () { //人数(申請者分1名固定) let members_Count = 1; - //②以降 社員が空欄の場合は部署を空欄に変更 - $('#Results_Class152').val() != '' && members_Count++; - $('#Results_Class153').val() != '' && members_Count++; - $('#Results_Class154').val() != '' && members_Count++; - $('#Results_Class155').val() != '' && members_Count++; - $('#Results_Class156').val() != '' && members_Count++; - $('#Results_Class157').val() != '' && members_Count++; - $('#Results_Class158').val() != '' && members_Count++; - $('#Results_Class159').val() != '' && members_Count++; - $('#Results_Class160').val() != '' && members_Count++; + if ($('#Results_Class152').attr('data-readonly')) { + $('#Results_Class152').text() != '' && members_Count++; + $('#Results_Class153').text() != '' && members_Count++; + $('#Results_Class154').text() != '' && members_Count++; + $('#Results_Class155').text() != '' && members_Count++; + $('#Results_Class156').text() != '' && members_Count++; + $('#Results_Class157').text() != '' && members_Count++; + $('#Results_Class158').text() != '' && members_Count++; + $('#Results_Class159').text() != '' && members_Count++; + $('#Results_Class160').text() != '' && members_Count++; + + } else { + //②以降 社員が空欄の場合は部署を空欄に変更 + $('#Results_Class152').val() != '' && members_Count++; + $('#Results_Class153').val() != '' && members_Count++; + $('#Results_Class154').val() != '' && members_Count++; + $('#Results_Class155').val() != '' && members_Count++; + $('#Results_Class156').val() != '' && members_Count++; + $('#Results_Class157').val() != '' && members_Count++; + $('#Results_Class158').val() != '' && members_Count++; + $('#Results_Class159').val() != '' && members_Count++; + $('#Results_Class160').val() != '' && members_Count++; + + } + //販売金額(税別)を人数で按分して計上 let money = parseFloat($('#Results_NumZ').val().toString().replaceAll(/[¥,]/g, '')); @@ -341,6 +356,17 @@ $p.ex.processScript = function (procNum) { $p.execProcess($('#Process_' + procNum)); } + break; + case '6': + console.log('Process_' + procNum + ' Activate'); + flag = window.confirm('部署担当者別に再計上します。宜しいですか?'); + //ISO集計へデータを飛ばす + if (flag) { + $p.ex.getMyData(); + $p.ex.updateSummaryData(myData); + $p.execProcess($('#Process_' + procNum)); + } + break; //default --------------------------------- default: @@ -372,6 +398,7 @@ $p.ex.getMyData = function () { } +/* $p.ex.updateSummaryData = function (myData) { let userList = []; @@ -379,6 +406,7 @@ $p.ex.updateSummaryData = function (myData) { let numQ = parseFloat($('#Results_NumQ').val().toString().replaceAll(/[¥,]/g, '')); //$('#Results_Class151').val() != '' && userList.push($('#Results_Class151').val()); + $('#Results_Class152').val() != '' && userList.push($('#Results_Class152').val()); $('#Results_Class153').val() != '' && userList.push($('#Results_Class153').val()); $('#Results_Class154').val() != '' && userList.push($('#Results_Class154').val()); @@ -412,10 +440,93 @@ $p.ex.updateSummaryData = function (myData) { $('#Results_Class160').val() != '' && $p.ex.updateSummary($('#Results_Class150').val(), $('#Results_Class160').val(), numQ); +} +*/ + +$p.ex.updateSummaryData = function (myData) { + let userList = []; + + let numP = parseFloat($('#Results_NumP').val().toString().replaceAll(/[¥,]/g, '')); + let numQ = parseFloat($('#Results_NumQ').val().toString().replaceAll(/[¥,]/g, '')); + + + if ($('#Results_Class142').attr('data-readonly') == '1') { + myData.ClassHash.Class152 != '' && userList.push(myData.ClassHash.Class152); + myData.ClassHash.Class153 != '' && userList.push(myData.ClassHash.Class153); + myData.ClassHash.Class154 != '' && userList.push(myData.ClassHash.Class154); + myData.ClassHash.Class155 != '' && userList.push(myData.ClassHash.Class155); + myData.ClassHash.Class156 != '' && userList.push(myData.ClassHash.Class156); + myData.ClassHash.Class157 != '' && userList.push(myData.ClassHash.Class157); + myData.ClassHash.Class158 != '' && userList.push(myData.ClassHash.Class158); + myData.ClassHash.Class159 != '' && userList.push(myData.ClassHash.Class159); + myData.ClassHash.Class160 != '' && userList.push(myData.ClassHash.Class160); + + //申請部署、申請者 + $p.ex.updateSummary(myData.ClassHash.Class141, myData.ClassHash.Class151, numP); + + //関連部署・関連社員 + myData.ClassHash.Class152 != '' && + $p.ex.updateSummary(myData.ClassHash.Class142, myData.ClassHash.Class152, numQ); + myData.ClassHash.Class153 != '' && + $p.ex.updateSummary(myData.ClassHash.Class143, myData.ClassHash.Class153, numQ); + myData.ClassHash.Class154 != '' && + $p.ex.updateSummary(myData.ClassHash.Class144, myData.ClassHash.Class154, numQ); + myData.ClassHash.Class155 != '' && + $p.ex.updateSummary(myData.ClassHash.Class145, myData.ClassHash.Class155, numQ); + myData.ClassHash.Class156 != '' && + $p.ex.updateSummary(myData.ClassHash.Class146, myData.ClassHash.Class156, numQ); + myData.ClassHash.Class157 != '' && + $p.ex.updateSummary(myData.ClassHash.Class147, myData.ClassHash.Class157, numQ); + myData.ClassHash.Class158 != '' && + $p.ex.updateSummary(myData.ClassHash.Class148, myData.ClassHash.Class158, numQ); + myData.ClassHash.Class159 != '' && + $p.ex.updateSummary(myData.ClassHash.Class149, myData.ClassHash.Class159, numQ); + myData.ClassHash.Class160 != '' && + $p.ex.updateSummary(myData.ClassHash.Class150, myData.ClassHash.Class160, numQ); + + } else { + $('#Results_Class152').val() != '' && userList.push($('#Results_Class152').val()); + $('#Results_Class153').val() != '' && userList.push($('#Results_Class153').val()); + $('#Results_Class154').val() != '' && userList.push($('#Results_Class154').val()); + $('#Results_Class155').val() != '' && userList.push($('#Results_Class155').val()); + $('#Results_Class156').val() != '' && userList.push($('#Results_Class156').val()); + $('#Results_Class157').val() != '' && userList.push($('#Results_Class157').val()); + $('#Results_Class158').val() != '' && userList.push($('#Results_Class158').val()); + $('#Results_Class159').val() != '' && userList.push($('#Results_Class159').val()); + $('#Results_Class160').val() != '' && userList.push($('#Results_Class160').val()); + + //申請部署、申請者 + $p.ex.updateSummary($('#Results_Class141').val(), $('#Results_Class151').val(), numP); + + //関連部署・関連社員 + $('#Results_Class152').val() != '' && + $p.ex.updateSummary($('#Results_Class142').val(), $('#Results_Class152').val(), numQ); + $('#Results_Class153').val() != '' && + $p.ex.updateSummary($('#Results_Class143').val(), $('#Results_Class153').val(), numQ); + $('#Results_Class154').val() != '' && + $p.ex.updateSummary($('#Results_Class144').val(), $('#Results_Class154').val(), numQ); + $('#Results_Class155').val() != '' && + $p.ex.updateSummary($('#Results_Class145').val(), $('#Results_Class155').val(), numQ); + $('#Results_Class156').val() != '' && + $p.ex.updateSummary($('#Results_Class146').val(), $('#Results_Class156').val(), numQ); + $('#Results_Class157').val() != '' && + $p.ex.updateSummary($('#Results_Class147').val(), $('#Results_Class157').val(), numQ); + $('#Results_Class158').val() != '' && + $p.ex.updateSummary($('#Results_Class148').val(), $('#Results_Class158').val(), numQ); + $('#Results_Class159').val() != '' && + $p.ex.updateSummary($('#Results_Class149').val(), $('#Results_Class159').val(), numQ); + $('#Results_Class160').val() != '' && + $p.ex.updateSummary($('#Results_Class150').val(), $('#Results_Class160').val(), numQ); + + } + } $p.ex.updateSummary = function (busyo, user, money) { //console.log(myData); + console.log('Update Summary:' + busyo); + console.log('Update Summary:' + user); + console.log('Update Summary:' + money); let classHash = { 'ClassA': myData.ClassHash.ClassA, //稟議コード @@ -423,11 +534,11 @@ $p.ex.updateSummary = function (busyo, user, money) { 'ClassB': busyo, //該当部署 'ClassC': user, //該当社員 'ClassD': areaList[busyo].areaName, //稟議内容 - 'ClassI': $('#Results_Class105').val(), //計上年 - 'ClassJ': $('#Results_Class106').val(), //計上月 - 'ClassK': $('#Results_Class107').val(), //計上年月 - 'ClassO': $('#Results_Class110').val(), //稟議項目 - 'ClassP': $('#Results_Class111').val(), //稟議の原因 + 'ClassI': $('#Results_Class105').attr('data-readonly') ? myData.ClassHash.Class105 : $('#Results_Class105').val(), //計上年 + 'ClassJ': $('#Results_Class106').attr('data-readonly') ? myData.ClassHash.Class106 : $('#Results_Class106').val(), //計上月 + 'ClassK': $('#Results_Class107').attr('data-readonly') ? myData.ClassHash.Class107 : $('#Results_Class107').val(), //計上年月 + 'ClassO': $('#Results_Class110').attr('data-readonly') ? myData.ClassHash.Class110 : $('#Results_Class110').val(), //稟議項目 + 'ClassP': $('#Results_Class111').attr('data-readonly') ? myData.ClassHash.Class111 : $('#Results_Class111').val(), //稟議の原因 'Class100': $p.id(), //ISO稟議管理レコードID }