ken_nogi/Pleasanter/Extended/wwwroot/profit_loss2/profit_loss.js
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

492 lines
32 KiB
JavaScript

let apiKey = '6504c8a807677a3a576e10327f3c19876c55736ee45d4a845796b9e7f5e087bfd4bd0d8184863da8cf1733ca635111432ab334aea59102b06a96ee6d2c05190d';
let nendo = '2024';
window.addEventListener('load', function () {
document.title = '損益確認書';
//getData('221608');
let url_string = window.location.href;
let url = new URL(url_string);
let reqId = url.searchParams.get('reqId');
console.log(reqId);
if (reqId == null) reqId = '999999';
if (reqId != '999999') {
console.log('getData!! ' + reqId);
getJigyouKeikakuData(reqId);
} else {
let template = Hogan.compile($('#profitLossTable').text());
let output = template.render();
$('#output').empty();
$('#output').append(output);
}
getShopList(reqId);
$('#shopSelect').on('change', function () {
console.log($('#shopSelect').val());
//getJigyouKeikakuData()
if ($('#shopSelect').val() != '999999') {
url.searchParams.set('reqId', $('#shopSelect').val());
window.open(url.toString(), '_self');
}
})
$('#reloadButton').button({
icons: {
primary: 'ui-icon-refresh'
}
});
});
function getJigyouKeikakuData(recordId) {
let dataTable = {};
let sumTable = {};
//データ初期化
let label = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'u', 'v', 'x', 'y'];
//受注(o)・着工(c)は請負金額(a)・棟数(b)・粗利益(e)・利益率(f)のみ使用
let prefixes = ['k', 'j', 'ok', 'oj', 'ck', 'cj'];
//---------------------------------------------------------------------------
for (i = 1; i <= 12; i++) {
for (j = 0; j < label.length; j++) {
for (p = 0; p < prefixes.length; p++) {
dataTable[prefixes[p] + '-' + i + '-' + label[j]] = 0;
}
}
}
for (j = 0; j < label.length; j++) {
for (p = 0; p < prefixes.length; p++) {
dataTable[prefixes[p] + '-' + 'hSum' + '-' + label[j]] = 0;
dataTable[prefixes[p] + '-' + 'gSum' + '-' + label[j]] = 0;
dataTable[prefixes[p] + '-' + 'aSum' + '-' + label[j]] = 0;
sumTable[prefixes[p] + '-' + 'hSum' + '-' + label[j]] = 0;
sumTable[prefixes[p] + '-' + 'gSum' + '-' + label[j]] = 0;
sumTable[prefixes[p] + '-' + 'aSum' + '-' + label[j]] = 0;
}
}
//---------------------------------------------------------------------------
console.log(dataTable);
let template = Hogan.compile($('#profitLossTable').text());
let output = template.render(dataTable);
$('#output').empty();
$('#output').append(output);
let json = {
'ApiVersion': 1.1,
'ApiKey': apiKey,
}
let url = 'https:///nextoffice.next-hd.co.jp/pleasanter/api/items/' + recordId + '/get';
$.ajax({
'type': 'post',
'async': false,
'url': url,
'data': JSON.stringify(json),
'contentType': 'application/json',
'scriptCharset': 'utf-8',
'dataType': 'json',
success: function (data) {
console.log(data);
document.title = data.Response.Data[0].ClassHash.ClassZ + '年度 損益確認書 ' + data.Response.Data[0].ClassHash.ClassB;
$('#mainTitle').text(document.title);
nendo = data.Response.Data[0].ClassHash.ClassZ;
let dataList = data.Response.Data[0].DescriptionHash;
let numList = data.Response.Data[0].NumHash;
//1棟単価
let numA = numList['NumA'] ? parseFloat(numList['NumA'].toString().replace(/,/g, '')) : 0;
let numB = numList['NumB'] ? parseFloat(numList['NumB'].toString().replace(/,/g, '')) : 0;
let numC = numList['NumC'] ? parseFloat(numList['NumC'].toString().replace(/,/g, '')) : 0;
let numA2 = numA ? Math.ceil(numA / 1000) : 0;
for (m = 1; m <= 12; m++) {
let num = 160 + m;
//console.log(JSON.parse(dataList['Description' + num]));
let data = JSON.parse(dataList['Description' + num]);
//-----------------------------------------------------------------------------------
//受注(月別合計テーブル Description041-052)
let orderNum = (40 + m).toString().padStart(3, '0');
let orderData = JSON.parse(dataList['Description' + orderNum]);
dataTable['ok-' + m + '-a'] = orderData[0][3] ? Math.ceil(orderData[0][3] / 1000).toLocaleString() : ''; //請負金額・計画
dataTable['oj-' + m + '-a'] = orderData[1][3] ? Math.ceil(orderData[1][3] / 1000).toLocaleString() : ''; //請負金額・実績
dataTable['ok-' + m + '-b'] = orderData[0][2] ? orderData[0][2] : ''; //棟数・計画
dataTable['oj-' + m + '-b'] = orderData[1][2] ? orderData[1][2] : ''; //棟数・実績
dataTable['ok-' + m + '-e'] = orderData[0][5] ? Math.ceil(orderData[0][5] / 1000).toLocaleString() : ''; //粗利益・計画
dataTable['oj-' + m + '-e'] = orderData[1][5] ? Math.ceil(orderData[1][5] / 1000).toLocaleString() : ''; //粗利益・実績
dataTable['ok-' + m + '-f'] = orderData[0][4] ? orderData[0][4] + '%' : ''; //利益率・計画
dataTable['oj-' + m + '-f'] = orderData[1][4] ? orderData[1][4] + '%' : ''; //利益率・実績
//着工(月別合計テーブル Description101-112)
let startNum = (100 + m).toString().padStart(3, '0');
let startData = JSON.parse(dataList['Description' + startNum]);
dataTable['ck-' + m + '-a'] = startData[0][3] ? Math.ceil(startData[0][3] / 1000).toLocaleString() : ''; //請負金額・計画
dataTable['cj-' + m + '-a'] = startData[1][3] ? Math.ceil(startData[1][3] / 1000).toLocaleString() : ''; //請負金額・実績
dataTable['ck-' + m + '-b'] = startData[0][2] ? startData[0][2] : ''; //棟数・計画
dataTable['cj-' + m + '-b'] = startData[1][2] ? startData[1][2] : ''; //棟数・実績
dataTable['ck-' + m + '-e'] = startData[0][5] ? Math.ceil(startData[0][5] / 1000).toLocaleString() : ''; //粗利益・計画
dataTable['cj-' + m + '-e'] = startData[1][5] ? Math.ceil(startData[1][5] / 1000).toLocaleString() : ''; //粗利益・実績
dataTable['ck-' + m + '-f'] = startData[0][4] ? startData[0][4] + '%' : ''; //利益率・計画
dataTable['cj-' + m + '-f'] = startData[1][4] ? startData[1][4] + '%' : ''; //利益率・実績
//-----------------------------------------------------------------------------------
//売上・粗利
dataTable['k-' + m + '-a'] = data[0][3] ? Math.ceil(data[0][3] / 1000).toLocaleString() : ''; //売上高・計画
dataTable['j-' + m + '-a'] = data[1][3] ? Math.ceil(data[1][3] / 1000).toLocaleString() : ''; //売上高・実績
dataTable['k-' + m + '-b'] = data[0][2] ? data[0][2] : ''; //完成棟数・計画
dataTable['j-' + m + '-b'] = data[1][2] ? data[1][2] : ''; //完成棟数・実績
dataTable['k-' + m + '-e'] = data[0][5] ? Math.ceil(data[0][5] / 1000).toLocaleString() : ''; //総粗利・計画
dataTable['j-' + m + '-e'] = data[1][5] ? Math.ceil(data[1][5] / 1000).toLocaleString() : ''; //総粗利・実績
dataTable['k-' + m + '-f'] = data[0][4] ? data[0][4] + '%' : ''; //利益率・計画
dataTable['j-' + m + '-f'] = data[1][4] ? data[1][4] + '%' : ''; //利益率・実績
dataTable['k-' + m + '-c'] = data[0][3] ? Math.ceil((data[0][3] - data[0][5]) / 1000).toLocaleString() : ''; //売上原価(売上高-総粗利)・計画
dataTable['j-' + m + '-c'] = data[1][3] ? Math.ceil((data[1][3] - data[1][5]) / 1000).toLocaleString() : ''; //売上原価(売上高-総粗利)・実績
dataTable['k-' + m + '-d'] = data[0][3] ? Math.floor((data[0][3] - data[0][5]) / data[0][3] * 1000) / 10 + '%' : ''; //原価率・計画
dataTable['j-' + m + '-d'] = data[1][3] ? Math.floor((data[1][3] - data[1][5]) / data[1][3] * 1000) / 10 + '%' : ''; //原価率・実績
//-----------------------------------------------------------------------------------
//人件費
let num001 = numList['Num001'] ? parseFloat(numList['Num001'].toString().replace(/,/g, '')) : 0;
dataTable['k-' + m + '-g'] = num001 ? num001.toLocaleString() : '';
dataTable['j-' + m + '-g'] = num001 ? num001.toLocaleString() : '';
//販売費
let num002 = numList['Num002'] ? parseFloat(numList['Num002'].toString().replace(/,/g, '')) : 0;
dataTable['k-' + m + '-h'] = num002 ? num002.toLocaleString() : '';
dataTable['j-' + m + '-h'] = num002 ? num002.toLocaleString() : '';
//減価償却費
let num011 = numList['Num011'] ? parseFloat(numList['Num011'].toString().replace(/,/g, '')) : 0;
dataTable['k-' + m + '-i'] = num011 ? num011.toLocaleString() : '';
dataTable['j-' + m + '-i'] = num011 ? num011.toLocaleString() : '';
//地代・家賃
let num012 = numList['Num012'] ? parseFloat(numList['Num012'].toString().replace(/,/g, '')) : 0;
dataTable['k-' + m + '-j'] = num012 ? num012.toLocaleString() : '';
dataTable['j-' + m + '-j'] = num012 ? num012.toLocaleString() : '';
//その他経費
let num013 = numList['Num013'] ? parseFloat(numList['Num013'].toString().replace(/,/g, '')) : 0;
dataTable['k-' + m + '-k'] = num013 ? num013.toLocaleString() : '';
dataTable['j-' + m + '-k'] = num013 ? num013.toLocaleString() : '';
//本社経費
let num014 = numList['Num014'] ? parseFloat(numList['Num014'].toString().replace(/,/g, '')) : 0;
dataTable['k-' + m + '-l'] = num014 ? num014.toLocaleString() : '';
dataTable['j-' + m + '-l'] = num014 ? num014.toLocaleString() : '';
//諸経費合計
let num025 = numList['Num025'] ? parseFloat(numList['Num025'].toString().replace(/,/g, '')) : 0;
dataTable['k-' + m + '-u'] = num025 ? num025.toLocaleString() : '';
dataTable['j-' + m + '-u'] = num025 ? num025.toLocaleString() : '';
//経常利益
let keiJo1 = (data[0][5] ? Math.ceil(data[0][5] / 1000) : 0) - (num025 ? num025 : 0);
dataTable['k-' + m + '-v'] = keiJo1 ? keiJo1.toLocaleString() : '';
let keiJo2 = (data[1][5] ? Math.ceil(data[1][5] / 1000) : 0) - (num025 ? num025 : 0);
dataTable['j-' + m + '-v'] = keiJo2 ? keiJo2.toLocaleString() : '';
//-----------------------------------------------------------------------------------
//BEP売上(諸経費合計 / 利益率)
let bep1 = data[0][4] ? Math.floor(num025 / (data[0][4] / 100)) : 0;
let bep2 = data[1][4] ? Math.floor(num025 / (data[1][4] / 100)) : 0;
dataTable['k-' + m + '-x'] = bep1 ? bep1.toLocaleString() : '';
dataTable['j-' + m + '-x'] = bep2 ? bep2.toLocaleString() : '';
//BEP棟数
if (numA) {
dataTable['k-' + m + '-y'] = bep1 ? Math.floor(bep1 / numA2 * 10) / 10 : '';
dataTable['j-' + m + '-y'] = bep2 ? Math.floor(bep2 / numA2 * 10) / 10 : '';
}
//-----------------------------------------------------------------------------------
//累計計算
if (m >= 4 && m <= 9) {
//前期
sumTable['k-hSum-a'] += dataTable['k-' + m + '-a'] ? parseFloat(dataTable['k-' + m + '-a'].toString().replace(/,/g, '')) : 0;
sumTable['k-hSum-b'] += dataTable['k-' + m + '-b'] ? parseFloat(dataTable['k-' + m + '-b'].toString().replace(/,/g, '')) : 0;
sumTable['k-hSum-c'] += dataTable['k-' + m + '-c'] ? parseFloat(dataTable['k-' + m + '-c'].toString().replace(/,/g, '')) : 0;
sumTable['k-hSum-e'] += dataTable['k-' + m + '-e'] ? parseFloat(dataTable['k-' + m + '-e'].toString().replace(/,/g, '')) : 0;
sumTable['k-hSum-g'] += dataTable['k-' + m + '-g'] ? parseFloat(dataTable['k-' + m + '-g'].toString().replace(/,/g, '')) : 0;
sumTable['k-hSum-h'] += dataTable['k-' + m + '-h'] ? parseFloat(dataTable['k-' + m + '-h'].toString().replace(/,/g, '')) : 0;
sumTable['k-hSum-i'] += dataTable['k-' + m + '-i'] ? parseFloat(dataTable['k-' + m + '-i'].toString().replace(/,/g, '')) : 0;
sumTable['k-hSum-j'] += dataTable['k-' + m + '-j'] ? parseFloat(dataTable['k-' + m + '-j'].toString().replace(/,/g, '')) : 0;
sumTable['k-hSum-k'] += dataTable['k-' + m + '-k'] ? parseFloat(dataTable['k-' + m + '-k'].toString().replace(/,/g, '')) : 0;
sumTable['k-hSum-l'] += dataTable['k-' + m + '-l'] ? parseFloat(dataTable['k-' + m + '-l'].toString().replace(/,/g, '')) : 0;
sumTable['k-hSum-u'] += dataTable['k-' + m + '-u'] ? parseFloat(dataTable['k-' + m + '-u'].toString().replace(/,/g, '')) : 0;
sumTable['j-hSum-a'] += dataTable['j-' + m + '-a'] ? parseFloat(dataTable['j-' + m + '-a'].toString().replace(/,/g, '')) : 0;
sumTable['j-hSum-b'] += dataTable['j-' + m + '-b'] ? parseFloat(dataTable['j-' + m + '-b'].toString().replace(/,/g, '')) : 0;
sumTable['j-hSum-c'] += dataTable['j-' + m + '-c'] ? parseFloat(dataTable['j-' + m + '-c'].toString().replace(/,/g, '')) : 0;
sumTable['j-hSum-e'] += dataTable['j-' + m + '-e'] ? parseFloat(dataTable['j-' + m + '-e'].toString().replace(/,/g, '')) : 0;
sumTable['j-hSum-g'] += dataTable['j-' + m + '-g'] ? parseFloat(dataTable['j-' + m + '-g'].toString().replace(/,/g, '')) : 0;
sumTable['j-hSum-h'] += dataTable['j-' + m + '-h'] ? parseFloat(dataTable['j-' + m + '-h'].toString().replace(/,/g, '')) : 0;
sumTable['j-hSum-i'] += dataTable['j-' + m + '-i'] ? parseFloat(dataTable['j-' + m + '-i'].toString().replace(/,/g, '')) : 0;
sumTable['j-hSum-j'] += dataTable['j-' + m + '-j'] ? parseFloat(dataTable['j-' + m + '-j'].toString().replace(/,/g, '')) : 0;
sumTable['j-hSum-k'] += dataTable['j-' + m + '-k'] ? parseFloat(dataTable['j-' + m + '-k'].toString().replace(/,/g, '')) : 0;
sumTable['j-hSum-l'] += dataTable['j-' + m + '-l'] ? parseFloat(dataTable['j-' + m + '-l'].toString().replace(/,/g, '')) : 0;
sumTable['j-hSum-u'] += dataTable['j-' + m + '-u'] ? parseFloat(dataTable['j-' + m + '-u'].toString().replace(/,/g, '')) : 0;
//受注・着工
sumTable['ok-hSum-a'] += dataTable['ok-' + m + '-a'] ? parseFloat(dataTable['ok-' + m + '-a'].toString().replace(/,/g, '')) : 0;
sumTable['ok-hSum-b'] += dataTable['ok-' + m + '-b'] ? parseFloat(dataTable['ok-' + m + '-b'].toString().replace(/,/g, '')) : 0;
sumTable['ok-hSum-e'] += dataTable['ok-' + m + '-e'] ? parseFloat(dataTable['ok-' + m + '-e'].toString().replace(/,/g, '')) : 0;
sumTable['oj-hSum-a'] += dataTable['oj-' + m + '-a'] ? parseFloat(dataTable['oj-' + m + '-a'].toString().replace(/,/g, '')) : 0;
sumTable['oj-hSum-b'] += dataTable['oj-' + m + '-b'] ? parseFloat(dataTable['oj-' + m + '-b'].toString().replace(/,/g, '')) : 0;
sumTable['oj-hSum-e'] += dataTable['oj-' + m + '-e'] ? parseFloat(dataTable['oj-' + m + '-e'].toString().replace(/,/g, '')) : 0;
sumTable['ck-hSum-a'] += dataTable['ck-' + m + '-a'] ? parseFloat(dataTable['ck-' + m + '-a'].toString().replace(/,/g, '')) : 0;
sumTable['ck-hSum-b'] += dataTable['ck-' + m + '-b'] ? parseFloat(dataTable['ck-' + m + '-b'].toString().replace(/,/g, '')) : 0;
sumTable['ck-hSum-e'] += dataTable['ck-' + m + '-e'] ? parseFloat(dataTable['ck-' + m + '-e'].toString().replace(/,/g, '')) : 0;
sumTable['cj-hSum-a'] += dataTable['cj-' + m + '-a'] ? parseFloat(dataTable['cj-' + m + '-a'].toString().replace(/,/g, '')) : 0;
sumTable['cj-hSum-b'] += dataTable['cj-' + m + '-b'] ? parseFloat(dataTable['cj-' + m + '-b'].toString().replace(/,/g, '')) : 0;
sumTable['cj-hSum-e'] += dataTable['cj-' + m + '-e'] ? parseFloat(dataTable['cj-' + m + '-e'].toString().replace(/,/g, '')) : 0;
} else {
//後期
sumTable['k-gSum-a'] += dataTable['k-' + m + '-a'] ? parseFloat(dataTable['k-' + m + '-a'].toString().replace(/,/g, '')) : 0;
sumTable['k-gSum-b'] += dataTable['k-' + m + '-b'] ? parseFloat(dataTable['k-' + m + '-b'].toString().replace(/,/g, '')) : 0;
sumTable['k-gSum-c'] += dataTable['k-' + m + '-c'] ? parseFloat(dataTable['k-' + m + '-c'].toString().replace(/,/g, '')) : 0;
sumTable['k-gSum-e'] += dataTable['k-' + m + '-e'] ? parseFloat(dataTable['k-' + m + '-e'].toString().replace(/,/g, '')) : 0;
sumTable['k-gSum-g'] += dataTable['k-' + m + '-g'] ? parseFloat(dataTable['k-' + m + '-g'].toString().replace(/,/g, '')) : 0;
sumTable['k-gSum-h'] += dataTable['k-' + m + '-h'] ? parseFloat(dataTable['k-' + m + '-h'].toString().replace(/,/g, '')) : 0;
sumTable['k-gSum-i'] += dataTable['k-' + m + '-i'] ? parseFloat(dataTable['k-' + m + '-i'].toString().replace(/,/g, '')) : 0;
sumTable['k-gSum-j'] += dataTable['k-' + m + '-j'] ? parseFloat(dataTable['k-' + m + '-j'].toString().replace(/,/g, '')) : 0;
sumTable['k-gSum-k'] += dataTable['k-' + m + '-k'] ? parseFloat(dataTable['k-' + m + '-k'].toString().replace(/,/g, '')) : 0;
sumTable['k-gSum-l'] += dataTable['k-' + m + '-l'] ? parseFloat(dataTable['k-' + m + '-l'].toString().replace(/,/g, '')) : 0;
sumTable['k-gSum-u'] += dataTable['k-' + m + '-u'] ? parseFloat(dataTable['k-' + m + '-u'].toString().replace(/,/g, '')) : 0;
sumTable['j-gSum-a'] += dataTable['j-' + m + '-a'] ? parseFloat(dataTable['j-' + m + '-a'].toString().replace(/,/g, '')) : 0;
sumTable['j-gSum-b'] += dataTable['j-' + m + '-b'] ? parseFloat(dataTable['j-' + m + '-b'].toString().replace(/,/g, '')) : 0;
sumTable['j-gSum-c'] += dataTable['j-' + m + '-c'] ? parseFloat(dataTable['j-' + m + '-c'].toString().replace(/,/g, '')) : 0;
sumTable['j-gSum-e'] += dataTable['j-' + m + '-e'] ? parseFloat(dataTable['j-' + m + '-e'].toString().replace(/,/g, '')) : 0;
sumTable['j-gSum-g'] += dataTable['j-' + m + '-g'] ? parseFloat(dataTable['j-' + m + '-g'].toString().replace(/,/g, '')) : 0;
sumTable['j-gSum-h'] += dataTable['j-' + m + '-h'] ? parseFloat(dataTable['j-' + m + '-h'].toString().replace(/,/g, '')) : 0;
sumTable['j-gSum-i'] += dataTable['j-' + m + '-i'] ? parseFloat(dataTable['j-' + m + '-i'].toString().replace(/,/g, '')) : 0;
sumTable['j-gSum-j'] += dataTable['j-' + m + '-j'] ? parseFloat(dataTable['j-' + m + '-j'].toString().replace(/,/g, '')) : 0;
sumTable['j-gSum-k'] += dataTable['j-' + m + '-k'] ? parseFloat(dataTable['j-' + m + '-k'].toString().replace(/,/g, '')) : 0;
sumTable['j-gSum-l'] += dataTable['j-' + m + '-l'] ? parseFloat(dataTable['j-' + m + '-l'].toString().replace(/,/g, '')) : 0;
sumTable['j-gSum-u'] += dataTable['j-' + m + '-u'] ? parseFloat(dataTable['j-' + m + '-u'].toString().replace(/,/g, '')) : 0;
//受注・着工
sumTable['ok-gSum-a'] += dataTable['ok-' + m + '-a'] ? parseFloat(dataTable['ok-' + m + '-a'].toString().replace(/,/g, '')) : 0;
sumTable['ok-gSum-b'] += dataTable['ok-' + m + '-b'] ? parseFloat(dataTable['ok-' + m + '-b'].toString().replace(/,/g, '')) : 0;
sumTable['ok-gSum-e'] += dataTable['ok-' + m + '-e'] ? parseFloat(dataTable['ok-' + m + '-e'].toString().replace(/,/g, '')) : 0;
sumTable['oj-gSum-a'] += dataTable['oj-' + m + '-a'] ? parseFloat(dataTable['oj-' + m + '-a'].toString().replace(/,/g, '')) : 0;
sumTable['oj-gSum-b'] += dataTable['oj-' + m + '-b'] ? parseFloat(dataTable['oj-' + m + '-b'].toString().replace(/,/g, '')) : 0;
sumTable['oj-gSum-e'] += dataTable['oj-' + m + '-e'] ? parseFloat(dataTable['oj-' + m + '-e'].toString().replace(/,/g, '')) : 0;
sumTable['ck-gSum-a'] += dataTable['ck-' + m + '-a'] ? parseFloat(dataTable['ck-' + m + '-a'].toString().replace(/,/g, '')) : 0;
sumTable['ck-gSum-b'] += dataTable['ck-' + m + '-b'] ? parseFloat(dataTable['ck-' + m + '-b'].toString().replace(/,/g, '')) : 0;
sumTable['ck-gSum-e'] += dataTable['ck-' + m + '-e'] ? parseFloat(dataTable['ck-' + m + '-e'].toString().replace(/,/g, '')) : 0;
sumTable['cj-gSum-a'] += dataTable['cj-' + m + '-a'] ? parseFloat(dataTable['cj-' + m + '-a'].toString().replace(/,/g, '')) : 0;
sumTable['cj-gSum-b'] += dataTable['cj-' + m + '-b'] ? parseFloat(dataTable['cj-' + m + '-b'].toString().replace(/,/g, '')) : 0;
sumTable['cj-gSum-e'] += dataTable['cj-' + m + '-e'] ? parseFloat(dataTable['cj-' + m + '-e'].toString().replace(/,/g, '')) : 0;
}
sumTable['k-aSum-a'] += dataTable['k-' + m + '-a'] ? parseFloat(dataTable['k-' + m + '-a'].toString().replace(/,/g, '')) : 0;
sumTable['k-aSum-b'] += dataTable['k-' + m + '-b'] ? parseFloat(dataTable['k-' + m + '-b'].toString().replace(/,/g, '')) : 0;
sumTable['k-aSum-c'] += dataTable['k-' + m + '-c'] ? parseFloat(dataTable['k-' + m + '-c'].toString().replace(/,/g, '')) : 0;
sumTable['k-aSum-e'] += dataTable['k-' + m + '-e'] ? parseFloat(dataTable['k-' + m + '-e'].toString().replace(/,/g, '')) : 0;
sumTable['k-aSum-g'] += dataTable['k-' + m + '-g'] ? parseFloat(dataTable['k-' + m + '-g'].toString().replace(/,/g, '')) : 0;
sumTable['k-aSum-h'] += dataTable['k-' + m + '-h'] ? parseFloat(dataTable['k-' + m + '-h'].toString().replace(/,/g, '')) : 0;
sumTable['k-aSum-i'] += dataTable['k-' + m + '-i'] ? parseFloat(dataTable['k-' + m + '-i'].toString().replace(/,/g, '')) : 0;
sumTable['k-aSum-j'] += dataTable['k-' + m + '-j'] ? parseFloat(dataTable['k-' + m + '-j'].toString().replace(/,/g, '')) : 0;
sumTable['k-aSum-k'] += dataTable['k-' + m + '-k'] ? parseFloat(dataTable['k-' + m + '-k'].toString().replace(/,/g, '')) : 0;
sumTable['k-aSum-l'] += dataTable['k-' + m + '-l'] ? parseFloat(dataTable['k-' + m + '-l'].toString().replace(/,/g, '')) : 0;
sumTable['k-aSum-u'] += dataTable['k-' + m + '-u'] ? parseFloat(dataTable['k-' + m + '-u'].toString().replace(/,/g, '')) : 0;
sumTable['j-aSum-a'] += dataTable['j-' + m + '-a'] ? parseFloat(dataTable['j-' + m + '-a'].toString().replace(/,/g, '')) : 0;
sumTable['j-aSum-b'] += dataTable['j-' + m + '-b'] ? parseFloat(dataTable['j-' + m + '-b'].toString().replace(/,/g, '')) : 0;
sumTable['j-aSum-c'] += dataTable['j-' + m + '-c'] ? parseFloat(dataTable['j-' + m + '-c'].toString().replace(/,/g, '')) : 0;
sumTable['j-aSum-e'] += dataTable['j-' + m + '-e'] ? parseFloat(dataTable['j-' + m + '-e'].toString().replace(/,/g, '')) : 0;
sumTable['j-aSum-g'] += dataTable['j-' + m + '-g'] ? parseFloat(dataTable['j-' + m + '-g'].toString().replace(/,/g, '')) : 0;
sumTable['j-aSum-h'] += dataTable['j-' + m + '-h'] ? parseFloat(dataTable['j-' + m + '-h'].toString().replace(/,/g, '')) : 0;
sumTable['j-aSum-i'] += dataTable['j-' + m + '-i'] ? parseFloat(dataTable['j-' + m + '-i'].toString().replace(/,/g, '')) : 0;
sumTable['j-aSum-j'] += dataTable['j-' + m + '-j'] ? parseFloat(dataTable['j-' + m + '-j'].toString().replace(/,/g, '')) : 0;
sumTable['j-aSum-k'] += dataTable['j-' + m + '-k'] ? parseFloat(dataTable['j-' + m + '-k'].toString().replace(/,/g, '')) : 0;
sumTable['j-aSum-l'] += dataTable['j-' + m + '-l'] ? parseFloat(dataTable['j-' + m + '-l'].toString().replace(/,/g, '')) : 0;
sumTable['j-aSum-u'] += dataTable['j-' + m + '-u'] ? parseFloat(dataTable['j-' + m + '-u'].toString().replace(/,/g, '')) : 0;
//受注・着工
sumTable['ok-aSum-a'] += dataTable['ok-' + m + '-a'] ? parseFloat(dataTable['ok-' + m + '-a'].toString().replace(/,/g, '')) : 0;
sumTable['ok-aSum-b'] += dataTable['ok-' + m + '-b'] ? parseFloat(dataTable['ok-' + m + '-b'].toString().replace(/,/g, '')) : 0;
sumTable['ok-aSum-e'] += dataTable['ok-' + m + '-e'] ? parseFloat(dataTable['ok-' + m + '-e'].toString().replace(/,/g, '')) : 0;
sumTable['oj-aSum-a'] += dataTable['oj-' + m + '-a'] ? parseFloat(dataTable['oj-' + m + '-a'].toString().replace(/,/g, '')) : 0;
sumTable['oj-aSum-b'] += dataTable['oj-' + m + '-b'] ? parseFloat(dataTable['oj-' + m + '-b'].toString().replace(/,/g, '')) : 0;
sumTable['oj-aSum-e'] += dataTable['oj-' + m + '-e'] ? parseFloat(dataTable['oj-' + m + '-e'].toString().replace(/,/g, '')) : 0;
sumTable['ck-aSum-a'] += dataTable['ck-' + m + '-a'] ? parseFloat(dataTable['ck-' + m + '-a'].toString().replace(/,/g, '')) : 0;
sumTable['ck-aSum-b'] += dataTable['ck-' + m + '-b'] ? parseFloat(dataTable['ck-' + m + '-b'].toString().replace(/,/g, '')) : 0;
sumTable['ck-aSum-e'] += dataTable['ck-' + m + '-e'] ? parseFloat(dataTable['ck-' + m + '-e'].toString().replace(/,/g, '')) : 0;
sumTable['cj-aSum-a'] += dataTable['cj-' + m + '-a'] ? parseFloat(dataTable['cj-' + m + '-a'].toString().replace(/,/g, '')) : 0;
sumTable['cj-aSum-b'] += dataTable['cj-' + m + '-b'] ? parseFloat(dataTable['cj-' + m + '-b'].toString().replace(/,/g, '')) : 0;
sumTable['cj-aSum-e'] += dataTable['cj-' + m + '-e'] ? parseFloat(dataTable['cj-' + m + '-e'].toString().replace(/,/g, '')) : 0;
}
//原価率
sumTable['k-hSum-d'] = sumTable['k-hSum-a'] ? Math.floor(sumTable['k-hSum-c'] / sumTable['k-hSum-a'] * 1000) / 10 : 0;
sumTable['j-hSum-d'] = sumTable['j-hSum-a'] ? Math.floor(sumTable['j-hSum-c'] / sumTable['j-hSum-a'] * 1000) / 10 : 0;
sumTable['k-gSum-d'] = sumTable['k-gSum-a'] ? Math.floor(sumTable['k-gSum-c'] / sumTable['k-gSum-a'] * 1000) / 10 : 0;
sumTable['j-gSum-d'] = sumTable['j-gSum-a'] ? Math.floor(sumTable['j-gSum-c'] / sumTable['j-gSum-a'] * 1000) / 10 : 0;
sumTable['k-aSum-d'] = sumTable['k-aSum-a'] ? Math.floor(sumTable['k-aSum-c'] / sumTable['k-aSum-a'] * 1000) / 10 : 0;
sumTable['j-aSum-d'] = sumTable['j-aSum-a'] ? Math.floor(sumTable['j-aSum-c'] / sumTable['j-aSum-a'] * 1000) / 10 : 0;
//利益率
sumTable['k-hSum-f'] = sumTable['k-hSum-a'] ? Math.floor(sumTable['k-hSum-e'] / sumTable['k-hSum-a'] * 1000) / 10 : 0;
sumTable['j-hSum-f'] = sumTable['j-hSum-a'] ? Math.floor(sumTable['j-hSum-e'] / sumTable['j-hSum-a'] * 1000) / 10 : 0;
sumTable['k-gSum-f'] = sumTable['k-gSum-a'] ? Math.floor(sumTable['k-gSum-e'] / sumTable['k-gSum-a'] * 1000) / 10 : 0;
sumTable['j-gSum-f'] = sumTable['j-gSum-a'] ? Math.floor(sumTable['j-gSum-e'] / sumTable['j-gSum-a'] * 1000) / 10 : 0;
sumTable['k-aSum-f'] = sumTable['k-aSum-a'] ? Math.floor(sumTable['k-aSum-e'] / sumTable['k-aSum-a'] * 1000) / 10 : 0;
sumTable['j-aSum-f'] = sumTable['j-aSum-a'] ? Math.floor(sumTable['j-aSum-e'] / sumTable['j-aSum-a'] * 1000) / 10 : 0;
//受注・着工の利益率
sumTable['ok-hSum-f'] = sumTable['ok-hSum-a'] ? Math.floor(sumTable['ok-hSum-e'] / sumTable['ok-hSum-a'] * 1000) / 10 : 0;
sumTable['oj-hSum-f'] = sumTable['oj-hSum-a'] ? Math.floor(sumTable['oj-hSum-e'] / sumTable['oj-hSum-a'] * 1000) / 10 : 0;
sumTable['ok-gSum-f'] = sumTable['ok-gSum-a'] ? Math.floor(sumTable['ok-gSum-e'] / sumTable['ok-gSum-a'] * 1000) / 10 : 0;
sumTable['oj-gSum-f'] = sumTable['oj-gSum-a'] ? Math.floor(sumTable['oj-gSum-e'] / sumTable['oj-gSum-a'] * 1000) / 10 : 0;
sumTable['ok-aSum-f'] = sumTable['ok-aSum-a'] ? Math.floor(sumTable['ok-aSum-e'] / sumTable['ok-aSum-a'] * 1000) / 10 : 0;
sumTable['oj-aSum-f'] = sumTable['oj-aSum-a'] ? Math.floor(sumTable['oj-aSum-e'] / sumTable['oj-aSum-a'] * 1000) / 10 : 0;
sumTable['ck-hSum-f'] = sumTable['ck-hSum-a'] ? Math.floor(sumTable['ck-hSum-e'] / sumTable['ck-hSum-a'] * 1000) / 10 : 0;
sumTable['cj-hSum-f'] = sumTable['cj-hSum-a'] ? Math.floor(sumTable['cj-hSum-e'] / sumTable['cj-hSum-a'] * 1000) / 10 : 0;
sumTable['ck-gSum-f'] = sumTable['ck-gSum-a'] ? Math.floor(sumTable['ck-gSum-e'] / sumTable['ck-gSum-a'] * 1000) / 10 : 0;
sumTable['cj-gSum-f'] = sumTable['cj-gSum-a'] ? Math.floor(sumTable['cj-gSum-e'] / sumTable['cj-gSum-a'] * 1000) / 10 : 0;
sumTable['ck-aSum-f'] = sumTable['ck-aSum-a'] ? Math.floor(sumTable['ck-aSum-e'] / sumTable['ck-aSum-a'] * 1000) / 10 : 0;
sumTable['cj-aSum-f'] = sumTable['cj-aSum-a'] ? Math.floor(sumTable['cj-aSum-e'] / sumTable['cj-aSum-a'] * 1000) / 10 : 0;
//経常利益
sumTable['k-hSum-v'] = sumTable['k-hSum-e'] - sumTable['k-hSum-u'];
sumTable['j-hSum-v'] = sumTable['j-hSum-e'] - sumTable['j-hSum-u'];
sumTable['k-gSum-v'] = sumTable['k-gSum-e'] - sumTable['k-gSum-u'];
sumTable['j-gSum-v'] = sumTable['j-gSum-e'] - sumTable['j-gSum-u'];
sumTable['k-aSum-v'] = sumTable['k-aSum-e'] - sumTable['k-aSum-u'];
sumTable['j-aSum-v'] = sumTable['j-aSum-e'] - sumTable['j-aSum-u'];
//BEP売上
sumTable['k-hSum-x'] = sumTable['k-hSum-f'] ? Math.floor(sumTable['k-hSum-u'] / (sumTable['k-hSum-f'] / 100)) : 0;
sumTable['j-hSum-x'] = sumTable['j-hSum-f'] ? Math.floor(sumTable['j-hSum-u'] / (sumTable['j-hSum-f'] / 100)) : 0;
sumTable['k-gSum-x'] = sumTable['k-gSum-f'] ? Math.floor(sumTable['k-gSum-u'] / (sumTable['k-gSum-f'] / 100)) : 0;
sumTable['j-gSum-x'] = sumTable['j-gSum-f'] ? Math.floor(sumTable['j-gSum-u'] / (sumTable['j-gSum-f'] / 100)) : 0;
sumTable['k-aSum-x'] = sumTable['k-aSum-f'] ? Math.floor(sumTable['k-aSum-u'] / (sumTable['k-aSum-f'] / 100)) : 0;
sumTable['j-aSum-x'] = sumTable['j-aSum-f'] ? Math.floor(sumTable['j-aSum-u'] / (sumTable['j-aSum-f'] / 100)) : 0;
//BEP棟数
sumTable['k-hSum-y'] = sumTable['k-hSum-x'] ? Math.floor(sumTable['k-hSum-x'] / numA2 * 10) / 10 : 0;
sumTable['j-hSum-y'] = sumTable['j-hSum-x'] ? Math.floor(sumTable['j-hSum-x'] / numA2 * 10) / 10 : 0;
sumTable['k-gSum-y'] = sumTable['k-gSum-x'] ? Math.floor(sumTable['k-gSum-x'] / numA2 * 10) / 10 : 0;
sumTable['j-gSum-y'] = sumTable['j-gSum-x'] ? Math.floor(sumTable['j-gSum-x'] / numA2 * 10) / 10 : 0;
sumTable['k-aSum-y'] = sumTable['k-aSum-x'] ? Math.floor(sumTable['k-aSum-x'] / numA2 * 10) / 10 : 0;
sumTable['j-aSum-y'] = sumTable['j-aSum-x'] ? Math.floor(sumTable['j-aSum-x'] / numA2 * 10) / 10 : 0;
for (j = 0; j < label.length; j++) {
for (p = 0; p < prefixes.length; p++) {
dataTable[prefixes[p] + '-hSum-' + label[j]] = sumTable[prefixes[p] + '-hSum-' + label[j]] ? sumTable[prefixes[p] + '-hSum-' + label[j]].toLocaleString() : '';
dataTable[prefixes[p] + '-gSum-' + label[j]] = sumTable[prefixes[p] + '-gSum-' + label[j]] ? sumTable[prefixes[p] + '-gSum-' + label[j]].toLocaleString() : '';
dataTable[prefixes[p] + '-aSum-' + label[j]] = sumTable[prefixes[p] + '-aSum-' + label[j]] ? sumTable[prefixes[p] + '-aSum-' + label[j]].toLocaleString() : '';
}
}
dataTable['k-hSum-d'] = dataTable['k-hSum-d'] ? dataTable['k-hSum-d'] + '%' : '';
dataTable['j-hSum-d'] = dataTable['j-hSum-d'] ? dataTable['j-hSum-d'] + '%' : '';
dataTable['k-gSum-d'] = dataTable['k-gSum-d'] ? dataTable['k-gSum-d'] + '%' : '';
dataTable['j-gSum-d'] = dataTable['j-gSum-d'] ? dataTable['j-gSum-d'] + '%' : '';
dataTable['k-aSum-d'] = dataTable['k-aSum-d'] ? dataTable['k-aSum-d'] + '%' : '';
dataTable['j-aSum-d'] = dataTable['j-aSum-d'] ? dataTable['j-aSum-d'] + '%' : '';
for (p = 0; p < prefixes.length; p++) {
dataTable[prefixes[p] + '-hSum-f'] = dataTable[prefixes[p] + '-hSum-f'] ? dataTable[prefixes[p] + '-hSum-f'] + '%' : '';
dataTable[prefixes[p] + '-gSum-f'] = dataTable[prefixes[p] + '-gSum-f'] ? dataTable[prefixes[p] + '-gSum-f'] + '%' : '';
dataTable[prefixes[p] + '-aSum-f'] = dataTable[prefixes[p] + '-aSum-f'] ? dataTable[prefixes[p] + '-aSum-f'] + '%' : '';
}
dataTable['tanka'] = numA.toLocaleString();
dataTable['arari'] = numB + '%';
dataTable['tsubo'] = numC + '坪';
let template = Hogan.compile($('#profitLossTable').text());
let output = template.render(dataTable);
$('#output').empty();
$('#output').append(output);
$.each($('.mainTable tbody td'), function (index, data) {
if (data.innerText != '') {
let num = parseFloat(data.innerText.toString().replace(/,|\%/g, ''));
if (num < 0) {
console.log(data);
data.style.color = 'red';
data.style.fontWeight = 'bold';
}
}
})
},
error: function (data) {
console.log(data);
}
});
}
//事業所一覧を取得し、プルダウンメニューを更新
function getShopList(reqId) {
let opEle = document.createElement('option');
opEle.value = '999999';
opEle.innerHTML = '--事業所を選択してください--';
if (opEle.value == reqId) opEle.setAttribute('selected', true);
$('#shopSelect').append(opEle);
console.log(nendo);
let recordId = '214737';
let json = {
'ApiVersion': 1.1,
'ApiKey': apiKey,
'View': {
'ColumnFilterHash': {
'ClassZ': '["' + nendo + '"]',
},
'ColumnSorterHash': {
'ResultId': 'asc'
}
},
};
let url = 'https:///nextoffice.next-hd.co.jp/pleasanter/api/items/' + recordId + '/get';
$.ajax({
'type': 'post',
'async': false,
'url': url,
'data': JSON.stringify(json),
'contentType': 'application/json',
'scriptCharset': 'utf-8',
'dataType': 'json',
success: function (data) {
console.log(data);
$.each(data.Response.Data, function (index, data) {
let shopName = data.ClassHash.ClassB;
let shopId = data.ResultId;
let opEle = document.createElement('option');
opEle.value = shopId;
opEle.innerHTML = shopName;
if (opEle.value == reqId) opEle.setAttribute('selected', true);
$('#shopSelect').append(opEle);
});
},
error: function (data) {
console.log(data);
}
});
}