|
- import { apptemplate } from "@/common/app-template";
- import { AppID } from "@/common/appids";
- import { dateParse, formatDateStr } from "@/common/datetime";
- import { setHeaderButton } from "@/common/header-button";
- import 定期駐車場料金計算 from "@/logic/定期駐車場料金計算";
- import { getCreateUrl, makeUrlSearchParams } from "@/rest-api/url";
- import { get定期駐車場プランマスタ } from "@/rest-api/定期駐車場プランマスタ";
- import { get車室情報管理 } from "@/rest-api/車室情報管理";
- import {
- 入金予定結果フィールド名,
- 支払方法Dropdown,
- 支払種別Dropdown,
- } from "@/types/入金予定結果";
- import { 初回入金予定Checkbox, 定期申込予約 } from "@/types/定期申込予約";
- import { 車室情報管理フィールド名 } from "@/types/車室情報管理";
- import { addDays, addMonths, endOfMonth, setDate } from "date-fns";
-
- const 表示判定 = (record: 定期申込予約): boolean => {
- if (!record.自動承認契約情報.value) {
- return false;
- }
-
- if (record.IC定期駐車場利用方法.value) {
- return false;
- }
-
- if (
- record.初回入金予定_必要分.value.includes(初回入金予定Checkbox.初月分) ===
- false
- ) {
- return false;
- }
-
- if (!!record.初回入金予定_初月分入金予定.value) {
- return false;
- }
-
- return true;
- };
-
- export default function 初月分入金予定作成ボタン(record: 定期申込予約) {
- if (表示判定(record)) {
- setHeaderButton(
- "初月分入金予定作成",
- apptemplate(async () => {
- // 計算
- const 契約 = await get車室情報管理(record.自動承認契約情報.value);
- const 契約日 = dateParse(契約.契約日.value);
- if (契約日 === null) return;
- const プラン = await get定期駐車場プランマスタ(
- 契約[車室情報管理フィールド名.プラン名].value
- );
-
- const 開始日 = (() => {
- if (契約日.getDate() === 1) {
- return 契約日;
- }
- return setDate(addMonths(契約日, 1), 1);
- })();
-
- const 終了日 = endOfMonth(開始日);
-
- const 計算 = new 定期駐車場料金計算(プラン);
- const 請求金額 = 計算.期間の計算(開始日, 終了日);
-
- const param = makeUrlSearchParams({
- [入金予定結果フィールド名.車室情報管理レコード番号]:
- record.自動承認契約情報.value,
- [入金予定結果フィールド名.初回振り込み関連申込レコード番号]:
- record.$id.value,
- [入金予定結果フィールド名.支払予定金額]: String(請求金額),
- [入金予定結果フィールド名.支払方法]: 支払方法Dropdown.振込,
- [入金予定結果フィールド名.支払種別]: 支払種別Dropdown.定期料金,
- [入金予定結果フィールド名.支払対象_利用_年]: String(
- 開始日.getFullYear()
- ),
- [入金予定結果フィールド名.支払対象_利用_月]: String(
- 開始日.getMonth() + 1
- ),
- [入金予定結果フィールド名.支払対象_利用_月間数]: "1",
- [入金予定結果フィールド名.支払予定日]: formatDateStr(
- addDays(契約日, -1)
- ),
- });
- const url = getCreateUrl(AppID.入金予定結果, param);
- window.open(url, "_blank", "popup");
- })
- );
- }
- }
|