From 310e28762f8e69c60ef5d2d8a1cc6f1282f0830a Mon Sep 17 00:00:00 2001 From: "sosuke.iwabuchi" Date: Mon, 18 Dec 2023 16:43:36 +0900 Subject: [PATCH] =?UTF-8?q?=E9=A0=98=E5=8F=8E=E8=A8=BC=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/apps/領収証/index.ts | 37 +++++++++++++++++++ src/mypage/index.ts | 1 + src/mypage/領収証発行.ts | 7 ++++ src/types/領収証.ts | 68 +++++++++++++++++++++++++++++++++++ 4 files changed, 113 insertions(+) create mode 100644 src/apps/領収証/index.ts create mode 100644 src/types/領収証.ts diff --git a/src/apps/領収証/index.ts b/src/apps/領収証/index.ts new file mode 100644 index 0000000..ee8d425 --- /dev/null +++ b/src/apps/領収証/index.ts @@ -0,0 +1,37 @@ +import { apptemplate, eventHnalder } from "@/common/app-template"; +import { setHeaderButton } from "@/common/header-button"; +import { KintoneEvent } from "@/common/kintone-event"; +import { ShowConfirmDialog, SuccessDialog } from "@/middleware/swal"; +import { saveReceipt } from "@/mypage/領収証発行"; +import { 領収証 } from "@/types/領収証"; +import { setup } from ".."; + +setup(() => { + kintone.events.on( + [KintoneEvent.詳細.レコード詳細画面を表示した後], + eventHnalder(async (event) => { + const record = event.record as 領収証; + // PDFファイル作成処理 + setHeaderButton( + "領収証PDF作成", + apptemplate(async ({ needReloadAtEnd }) => { + const confirm = await ShowConfirmDialog({ + title: "領収証PDFを作成しますか", + text: "※作成済みのファイルは破棄されます", + }); + + if (!confirm.isConfirmed) { + return; + } + + const ret = await saveReceipt(Number(record.$id.value)); + if (!ret) throw new Error("API実行失敗"); + + await SuccessDialog.fire(); + + needReloadAtEnd(true); + }) + ); + }) + ); +}); diff --git a/src/mypage/index.ts b/src/mypage/index.ts index 2cba3a3..a65e925 100644 --- a/src/mypage/index.ts +++ b/src/mypage/index.ts @@ -3,5 +3,6 @@ export const MyPageApiID = { 定期選考候補者設定: "season-ticket-contract-selection/fill-candidates", 定期選考一斉通知: "season-ticket-contract-selection/notice-to-candidates", 領収証発行: "receipt/create", + 領収証ファイル保存: "receipt/save", } as const; export type MyPageApiID = (typeof MyPageApiID)[keyof typeof MyPageApiID]; diff --git a/src/mypage/領収証発行.ts b/src/mypage/領収証発行.ts index 412daec..8a2b021 100644 --- a/src/mypage/領収証発行.ts +++ b/src/mypage/領収証発行.ts @@ -7,3 +7,10 @@ export const makeReceipt = (recordNos: number[]) => { }; return send(MyPageApiID.領収証発行, sendData); }; + +export const saveReceipt = (recordNo: number) => { + const sendData = { + receipt_record_no: recordNo, + }; + return send(MyPageApiID.領収証ファイル保存, sendData); +}; diff --git a/src/types/領収証.ts b/src/types/領収証.ts new file mode 100644 index 0000000..2e30f11 --- /dev/null +++ b/src/types/領収証.ts @@ -0,0 +1,68 @@ +import { KintoneRecordField } from "@kintone/rest-api-client"; +import { AppRecord } from "."; + +const F = {} as const; + +// export const 状態Dropdown = { +// 空き: "空き", +// 契約中: "契約中", +// } as const; +// export type 状態Dropdown = (typeof 状態Dropdown)[keyof typeof 状態Dropdown]; + +export const 領収証フィールド名 = F; + +export type 領収証 = AppRecord & { + 顧客コード: KintoneRecordField.Number; + 領収証番号: KintoneRecordField.SingleLineText; + 合計: KintoneRecordField.Number; + インボイス登録番号: KintoneRecordField.SingleLineText; + 顧客名: KintoneRecordField.SingleLineText; + 初回領収証ダウンロード日時: KintoneRecordField.DateTime; + 宛名: KintoneRecordField.SingleLineText; + 領収証名称: KintoneRecordField.SingleLineText; + 発行日: KintoneRecordField.Date; + 発行事業者名: KintoneRecordField.MultiLineText; + + 領収証PDF: KintoneRecordField.File; + テーブル_入金実績: { + type: "SUBTABLE"; + value: { + id: string; + value: { + 入金実績_入金額: KintoneRecordField.Number; + 入金実績_支払種別: KintoneRecordField.SingleLineText; + 入金実績支払対象_利用_月: KintoneRecordField.SingleLineText; + 入金実績_入金日: KintoneRecordField.Date; + 入金実績支払対象_利用_年: KintoneRecordField.SingleLineText; + 入金実績_入金予定レコード番号: KintoneRecordField.Number; + }; + }[]; + }; + テーブル_明細: { + type: "SUBTABLE"; + value: { + id: string; + value: { + 明細_単価: KintoneRecordField.Number; + 明細_備考: KintoneRecordField.SingleLineText; + 明細_数量: KintoneRecordField.Number; + 明細_名称: KintoneRecordField.SingleLineText; + 明細_金額: KintoneRecordField.Number; + 明細_駐車場名: KintoneRecordField.SingleLineText; + 明細_税率: KintoneRecordField.Number; + 明細_対象月: KintoneRecordField.SingleLineText; + }; + }[]; + }; + テーブル_内税明細: { + type: "SUBTABLE"; + value: { + id: string; + value: { + 内税明細_税込金額合計: KintoneRecordField.Number; + 内税明細_消費税_内税: KintoneRecordField.Number; + 内税明細_税率: KintoneRecordField.Number; + }; + }[]; + }; +};