足助 聖一様
cstapの落合です。
フィールドコードはこちらで使いやすいものに変更したので、テンプレートを参考にしていただきたいと思います。
http://firestorage.jp/download/ec477a9a2863ad867f3b20fb9126737440cc830c
テンプレートについては、以下のヘルプに記載されています。
https://help.cybozu.com/ja/k/admin/template.html
JavaScriptは、こんな感じです。
参考になりますでしょうか?
/**
* フィールドは全て数値フィールド
*
* 1
* 月額固定費1:fixed_price1
* 調整額1(Table1):adjust_unit_price1
* 契約単価1(Table1):unit_price1
* 売上1:sales1
* 契約単価の合計1:total_price1
* 成果金額の調整額1:total_adjust_price1
*
* 2
* 月額固定費2:fixed_price2
* 調整額2(Table2):adjust_unit_price2
* 契約単価2(Table2):unit_price2
* 売上2:sales2
* 契約単価の合計2:total_price2
* 成果金額の調整額2:total_adjust_price2
*/
(function() {
“use strict”;
/**
* 成果金額の調整額を算出
*/
var calTotalAdustPrice = function (fixed, sumUnit, total) {
var tmp = - fixed;
if (sumUnit <= fixed) {
tmp = - sumUnit;
}
var total_adjust = tmp;
if (total < fixed + sumUnit + tmp) {
total_adjust = total - (fixed + sumUnit);
}
return total_adjust;
};
/**
* メインの計算処理
*/
var myCalculate = function (record, n) {
// 月額固定費
var fixed = parseFloat(record['fixed_price' + n].value);
// 調整額
var adjust = parseFloat(record['adjust_unit_price' + n].value);
// テーブル
var table = record['Table' + n].value;
// 契約単価の合計を計算
var sumUnit = 0;
for (var i = 0, l = table.length; i < l; i++) {
var row = table[i].value;
sumUnit = sumUnit + parseFloat(row['unit_price' + n].value);
}
// 契約単価の合計を計算
var total = fixed + adjust + sumUnit;
record['total_price' + n].value = total;
// 成果金額の調整額を計算
record['total_adjust_price' + n].value = calTotalAdustPrice(fixed, sumUnit, total);
};
// 登録、編集画面表示時の処理
kintone.events.on(["app.record.edit.show", "app.record.create.show"], function(event) {
// 計算する数値フィールドを編集不可にする
event.record.total_price1.disabled = true;
event.record.total_price2.disabled = true;
event.record.total_adjust_price1.disabled = true;
event.record.total_adjust_price2.disabled = true;
return event;
});
// 登録、編集時の処理
kintone.events.on(["app.record.edit.submit", "app.record.create.submit"], function(event) {
var record = event.record;
// 1と2で同じ計算処理を行う
myCalculate(record, 1);
myCalculate(record, 2);
return event;
});
})();