カレンダーplusから更新フォームに画面遷移したときに計算もしたい

お世話になります。

プラグインの「カレンダーPlus」を利用して、空いている駐車場の予約を行いたい。
空き駐車場は可変でマスターからルックアップしており、日別表示(リリース別)を表示している。
以下のJSでうまく動作しませんので教えていただきたくお願いいたします。
やりたいことは以下の通りです。
******************
カレンダーplusで駐車区画(KUKAKUBANGO)の利用したい時間帯を
トレースした後、アプリ(駐車場予約)に画面遷移した時に自動入力された
時間の入庫日時(time1)から出庫日時(time2)までの時間(分)を計算し、
time99に自動表示し、利用30分当たり50円の利用料を計算して、
priceへ表示する。但し30分未満は30分へ繰り上げする。
・現在時刻よりも前の時間を指定するとエラー表示する。
・同一区画番号の時間重複不可
・最大12時間の予約とする。但し利用日の3日前に空きがあれば
24時間まで延長予約できる。
・保存ボタン押すと駐車場予約の一覧画面(空き状況)へ戻る

******************

(function( ){
‘use strict’;

const PRICE_PER_30MIN = 50;

const MAX_NORMAL = 12 * 60; // 12時間

const MAX_EXTEND = 24 * 60; // 24時間

const RETURN_VIEW_ID = ‘5951427’; // 一覧ID

/********************************

* 利用時間・料金計算

********************************/

function calculate(record) {

const startVal = record.time1.value;

const endVal   = record.time2.value;



if (!startVal || !endVal) {

  record.time99.value = null;

  record.price.value  = null;

  return;

}



const start = new Date(startVal);

const end   = new Date(endVal);

const now   = new Date();



// 現在時刻より前は禁止

if (start < now || end < now) {

  record.time1.error = '現在時刻より前の時間は指定できません。';

  record.time99.value = null;

  record.price.value  = null;

  return;

}

record.time1.error = null;



// 開始 >= 終了はエラー

if (start >= end) {

  record.time2.error = '出庫日時は入庫日時より後を指定してください。';

  record.time99.value = null;

  record.price.value  = null;

  return;

}

record.time2.error = null;



// 利用時間(分)

const diffMinutes = Math.ceil((end - start) / (1000 \* 60));



// 利用日までの日数

const daysDiff = Math.floor((start - now) / (1000 \* 60 \* 60 \* 24));



// 最大利用時間

const maxMinutes = (daysDiff <= 3) ? MAX_EXTEND : MAX_NORMAL;



if (diffMinutes > maxMinutes) {

  record.time2.error =

    (maxMinutes === MAX_EXTEND)

      ? '利用日の3日前からは最大24時間まで予約可能です。'

      : '最大12時間までしか予約できません。';

  record.time99.value = null;

  record.price.value  = null;

  return;

}



// 30分単位で切り上げ

const units = Math.ceil(diffMinutes / 30);

record.time99.value = units \* 30;

record.price.value  = units \* PRICE_PER_30MIN;

}

/********************************

* カレンダーPlus遷移直後

********************************/

kintone.events.on(‘app.record.create.show’, function (event) {

calculate(event.record);

return event;

});

/********************************

* 日時変更時も再計算

********************************/

kintone.events.on([

'app.record.create.change.time1',

'app.record.create.change.time2',

'app.record.edit.change.time1',

'app.record.edit.change.time2'

], function (event) {

calculate(event.record);

return event;

});

/********************************

* 同一区画番号の時間重複チェック

********************************/

kintone.events.on([

'app.record.create.submit',

'app.record.edit.submit'

], async function (event) {

const record = event.record;



const start = record.time1.value;

const end   = record.time2.value;

const place = record.KUKAKUBANGO.value;



const query =

  'KUKAKUBANGO = "' + place + '" ' +

  'and time1 < "' + end + '" ' +

  'and time2 > "' + start + '"';



const resp = await kintone.api(

  kintone.api.url('/k/v1/records', true),

  'GET',

  { app: kintone.app.getId(), query: query }

);



// 自分自身を除外

if (

  resp.records.length > 0 &&

  !(resp.records.length === 1 && resp.records\[0\].$id.value === record.$id.value)

) {

  event.error = '同一区画番号で予約時間が重複しています。';

}



return event;

});

/********************************

* 更新後に一覧ID=5951427へ遷移

********************************/

kintone.events.on(‘app.record.edit.submit.success’, function () {

location.href =

  '/k/' + kintone.app.getId() + '/?view=' + RETURN_VIEW_ID;

});

})();

カレンダーplusから更新フォームに画面遷移したときに計算もしたい