京都のkintone用javascript
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

98 lines
3.9KB

  1. import { apptemplate } from "@/common/app-template";
  2. import { AppID } from "@/common/appids";
  3. import { setHeaderButton } from "@/common/header-button";
  4. import { makeRecordData } from "@/common/rest-api-client";
  5. import { 契約情報更新イベント } from "@/event/契約情報更新";
  6. import {
  7. ErrorDialog,
  8. FormDialog,
  9. ShowConfirmDialog,
  10. ShowFormDialog,
  11. SuccessDialog,
  12. } from "@/middleware/swal";
  13. import { EmailID, sendEmail } from "@/mypage/メール";
  14. import bulkRequest from "@/rest-api/bulk";
  15. import { get車室情報管理 } from "@/rest-api/車室情報管理";
  16. import { 各種申請, 状況Dropdown, 申請種別Dropdown } from "@/types/各種申請";
  17. import { 車室情報管理フィールド名 } from "@/types/車室情報管理";
  18. import { 各種申請完了 } from "./common";
  19. import { 定期契約更新 } from "@/mypage/IC定期";
  20. import { Message } from "@/exception";
  21. import { MessageBag } from "@/common/message";
  22. export const 駐車場利用方法変更承認ボタン = (record: 各種申請) => {
  23. if (
  24. record.状況.value !== 状況Dropdown.完了 &&
  25. record.申請種別.value === 申請種別Dropdown.IC定期_駐車場利用方法変更申請
  26. ) {
  27. setHeaderButton(
  28. "駐車場利用方法変更申請 承認",
  29. apptemplate(async ({ setEvent, needReloadAtEnd }) => {
  30. const confirm = await ShowConfirmDialog({ title: "承認しますか" });
  31. if (!confirm.isConfirmed) return;
  32. let 契約 = await get車室情報管理(record.契約情報.value);
  33. let 定期券番号 = "";
  34. if (
  35. record.IC定期_駐車場利用方法変更申請_変更後.value === "貸与ICカード"
  36. ) {
  37. const form = await ShowFormDialog({
  38. text: "定期券番号を入力してください",
  39. input: "number",
  40. });
  41. if (!form.isConfirmed) return;
  42. 定期券番号 = form.value;
  43. }
  44. const message = new MessageBag();
  45. const res = await 定期契約更新(
  46. {
  47. user_id: 契約.IC定期関連情報_利用者ID.value,
  48. parking_management_code: 契約.IC定期関連情報_駐車場管理コード.value,
  49. season_ticket_seq_no: 定期券番号, // 自動採番
  50. vehicle_type_name: 契約.IC定期関連情報_車種.value,
  51. parking_use_type_name:
  52. record.IC定期_駐車場利用方法変更申請_変更後.value,
  53. contractor_type_name: 契約.IC定期関連情報_契約者種類.value,
  54. expiration_start_date: 契約.IC定期関連情報_有効期限開始.value ?? "",
  55. expiration_end_date: 契約.IC定期関連情報_有効期限開始.value ?? "",
  56. position_memo: 契約.IC定期関連情報_駐車位置情報.value,
  57. memo: 契約.IC定期関連情報_備考.value,
  58. },
  59. message
  60. );
  61. if (res === false) {
  62. throw new Message("IC定期連携失敗 " + message.getGeneralMessage());
  63. }
  64. // 車室情報管理への反映
  65. bulkRequest.update({
  66. app: AppID.車室情報管理,
  67. id: record.契約情報.value,
  68. record: makeRecordData({
  69. [車室情報管理フィールド名.IC定期関連情報_駐車場利用方法]:
  70. record.IC定期_駐車場利用方法変更申請_変更後.value ?? "",
  71. [車室情報管理フィールド名.IC定期関連情報_定期券番号]: String(
  72. res.season_ticket_seq_no
  73. ),
  74. }),
  75. });
  76. // 申請の完了
  77. await 各種申請完了(record);
  78. // データ保存
  79. await bulkRequest.save();
  80. 契約 = await get車室情報管理(record.契約情報.value);
  81. setEvent(new 契約情報更新イベント().getEvent(契約));
  82. await SuccessDialog.fire();
  83. needReloadAtEnd(true);
  84. })
  85. );
  86. }
  87. };