浏览代码

受付メール対応

バンクチェックとゆうちょ
develop
sosuke.iwabuchi 1年前
父节点
当前提交
5c0d0c5a43
共有 8 个文件被更改,包括 160 次插入100 次删除
  1. +0
    -76
      src/apps/kt-kintone-lib/index.ts
  2. +6
    -7
      src/apps/定期申込予約/buttons/受付メール_ゆうちょ_送信ボタン.ts
  3. +130
    -0
      src/apps/定期申込予約/buttons/受付メール_バンクチェック_送信ボタン.ts
  4. +4
    -2
      src/apps/定期申込予約/index.tsx
  5. +1
    -0
      src/common/rest-api-client.ts
  6. +2
    -1
      src/mypage/メール.ts
  7. +3
    -2
      src/types/入金予定結果.ts
  8. +14
    -12
      src/types/定期申込予約.ts

+ 0
- 76
src/apps/kt-kintone-lib/index.ts 查看文件

@@ -1,76 +0,0 @@
import { EmailID, sendEmail } from "@/mypage/メール";
import { makeReceipt } from "@/mypage/領収証発行";

/**
* windowのグローバルオブジェクトに関数を登録する
* 本typescriptプロジェクト以外からも関数を参照できるようにするためのAPI
*/

declare global {
interface Window {
KtKintoneLib: typeof KtKintoneLib;
}
}

namespace KtKintoneLib {
// MyPageAPIを呼び出すための関数群
export namespace api {
// 領収証作成API
export function 領収証作成(
入金予定実績レコード番号: number[]
): Promise<boolean> {
return makeReceipt(入金予定実績レコード番号);
}

// メール送信API群
export namespace メール送信 {
export function 解約承認(申請番号: string): Promise<boolean> {
return sendEmail(EmailID.解約承認, {
application_no: 申請番号,
});
}
export function 車両番号防犯登録番号変更完了(
申請番号: string
): Promise<boolean> {
return sendEmail(EmailID.車両番号_防犯登録番号変更完了, {
application_no: 申請番号,
});
}
export function 利用者情報変更完了(申請番号: string): Promise<boolean> {
return sendEmail(EmailID.利用者情報変更完了, {
application_no: 申請番号,
});
}
export function プラン変更完了(申請番号: string): Promise<boolean> {
return sendEmail(EmailID.プラン変更完了, {
application_no: 申請番号,
});
}
export function 申込受付(
定期申込予約レコード番号: number
): Promise<boolean> {
return sendEmail(EmailID.申込受付, {
season_ticket_contract_entry_record_no: 定期申込予約レコード番号,
});
}
export function 申込承認(
定期申込予約レコード番号: number
): Promise<boolean> {
return sendEmail(EmailID.申込承認, {
season_ticket_contract_entry_record_no: 定期申込予約レコード番号,
});
}
export function 口座振替未納者通知(
車室情報管理レコード番号: number,
入金予定結果レコード番号: number
): Promise<boolean> {
return sendEmail(EmailID.口座振替_未納者通知, {
season_ticket_contract_record_no: 車室情報管理レコード番号,
payment_plan_record_no: 入金予定結果レコード番号,
});
}
}
}
}

window.KtKintoneLib = KtKintoneLib;

src/apps/定期申込予約/buttons/受付メール送信ボタン.ts → src/apps/定期申込予約/buttons/受付メール_ゆうちょ_送信ボタン.ts 查看文件

@@ -48,13 +48,13 @@ const 表示判定 = (record: 定期申込予約): boolean => {
return true;
};

export default function 受付メール送信ボタン(record: 定期申込予約) {
export default function 受付メール_ゆうちょ_送信ボタン(record: 定期申込予約) {
if (表示判定(record)) {
setHeaderButton(
"受付メール送信",
"受付メール送信 ゆうちょ",
apptemplate(async ({ needReloadAtEnd }) => {
const confirmMessage = (() => {
if (!!record.受付メール送信日時.value) {
if (!!record.受付メール送信日時_ゆうちょ.value) {
return "送信しますか?(再送信)";
}
return "送信しますか?";
@@ -102,7 +102,7 @@ export default function 受付メール送信ボタン(record: 定期申込予
}

// メール送信
const emailSuccess = await sendEmail(EmailID.申込受付, {
const emailSuccess = await sendEmail(EmailID.申込受付_ゆうちょ, {
season_ticket_contract_entry_record_no: Number(record.$id.value),
});

@@ -114,9 +114,8 @@ export default function 受付メール送信ボタン(record: 定期申込予
app: AppID.定期申込予約,
id: record.$id.value,
record: makeRecordData({
[定期申込予約フィールド名.受付メール送信日時]: makeDatetimeStr(
now()
),
[定期申込予約フィールド名.受付メール送信日時_ゆうちょ]:
makeDatetimeStr(now()),
}),
});


+ 130
- 0
src/apps/定期申込予約/buttons/受付メール_バンクチェック_送信ボタン.ts 查看文件

@@ -0,0 +1,130 @@
import { apptemplate } from "@/common/app-template";
import { AppID } from "@/common/appids";
import { now } from "@/common/datetime";
import { setHeaderButton } from "@/common/header-button";
import { makeDatetimeStr, makeRecordData } from "@/common/rest-api-client";
import { Message } from "@/exception";
import { ShowConfirmDialog, SuccessDialog } from "@/middleware/swal";
import { EmailID, sendEmail } from "@/mypage/メール";
import bulkRequest from "@/rest-api/bulk";
import { QueryBuilder } from "@/rest-api/query";
import { 入金予定結果, 入金予定結果フィールド名 } from "@/types/入金予定結果";
import {
初回入金予定Checkbox,
定期申込予約,
定期申込予約フィールド名,
} from "@/types/定期申込予約";
import { 車室情報管理フィールド名 } from "@/types/車室情報管理";
import { KintoneRestAPIClient } from "@kintone/rest-api-client";

const 表示判定 = (record: 定期申込予約): boolean => {
if (!record.自動承認契約情報.value) {
return false;
}

if (!!record.IC定期駐車場利用方法.value) {
return false;
}

if (
record.初回入金予定_必要分.value.includes(初回入金予定Checkbox.初月分) &&
!record.初回入金予定_初月分入金予定.value
) {
return false;
}
if (
record.初回入金予定_必要分.value.includes(初回入金予定Checkbox.日割り分) &&
!record.初回入金予定_日割り分入金予定.value
) {
return false;
}
if (
record.初回入金予定_必要分.value.includes(初回入金予定Checkbox.保証金) &&
!record.初回入金予定_保証金入金予定.value
) {
return false;
}

return true;
};

export default function 受付メール_バンクチェック_送信ボタン(
record: 定期申込予約
) {
if (表示判定(record)) {
setHeaderButton(
"受付メール送信 バンクチェック",
apptemplate(async ({ needReloadAtEnd }) => {
const confirmMessage = (() => {
if (!!record.受付メール送信日時_バンクチェック.value) {
return "送信しますか?(再送信)";
}
return "送信しますか?";
})();
const confirm = await ShowConfirmDialog({
text: confirmMessage,
});
if (!confirm.isConfirmed) return;

const client = new KintoneRestAPIClient();
const F = 入金予定結果フィールド名;
const builder = new QueryBuilder();
builder.where(F.初回振り込み関連申込レコード番号, record.$id.value);
const { records } = await client.record.getRecords<入金予定結果>({
app: AppID.入金予定結果,
query: builder.build(),
});

// 入金予定日を車室情報管理アプリにも登録する
if (0 < records.length) {
const 車室契約情報レコード番号 = record.自動承認契約情報.value;
if (!車室契約情報レコード番号) {
throw new Message("契約情報不明");
}

const 支払予定日 = records[0][F.支払予定日].value;
if (!支払予定日) {
throw new Message("支払予定日不明");
}
const 合計金額: number = (() => {
let num = 0;
records.forEach((ele) => {
num += Number(ele[F.支払予定金額].value);
});
return num;
})();

bulkRequest.update({
app: AppID.車室情報管理,
id: record.自動承認契約情報.value,
record: makeRecordData({
[車室情報管理フィールド名.入金予定日]: 支払予定日,
}),
});
}

// メール送信
const emailSuccess = await sendEmail(EmailID.申込受付_バンクチェック, {
season_ticket_contract_entry_record_no: Number(record.$id.value),
});

if (!emailSuccess) {
throw new Message("メール送信に失敗しました");
}

bulkRequest.update({
app: AppID.定期申込予約,
id: record.$id.value,
record: makeRecordData({
[定期申込予約フィールド名.受付メール送信日時_バンクチェック]:
makeDatetimeStr(now()),
}),
});

await bulkRequest.save();
await SuccessDialog.fire();
needReloadAtEnd(true);
})
);
}
}

+ 4
- 2
src/apps/定期申込予約/index.tsx 查看文件

@@ -5,12 +5,13 @@ import { 定期申込予約 } from "@/types/定期申込予約";
import { setup } from "..";
import 保証金入金予定作成ボタン from "./buttons/保証金入金予定作成ボタン";
import 初月分入金予定作成ボタン from "./buttons/初月分入金予定作成ボタン";
import 受付メール送信ボタン from "./buttons/受付メール送信ボタン";
import 日割り入金予定作成ボタン from "./buttons/日割り入金予定作成ボタン";
import 自動承認ボタン from "./buttons/自動承認ボタン";
import 承認メール送信ボタン from "./buttons/承認メール送信ボタン";
import 定期駐車場プラン入力 from "./buttons/定期駐車場プラン入力";
import バンクチェック登録ボタン from "./buttons/バンクチェック登録ボタン";
import 受付メール_ゆうちょ_送信ボタン from "./buttons/受付メール_ゆうちょ_送信ボタン";
import 受付メール_バンクチェック_送信ボタン from "./buttons/受付メール_バンクチェック_送信ボタン";

setup(() => {
kintone.events.on(
@@ -24,7 +25,8 @@ setup(() => {
初月分入金予定作成ボタン(record);
日割り入金予定作成ボタン(record);
保証金入金予定作成ボタン(record);
受付メール送信ボタン(record);
受付メール_ゆうちょ_送信ボタン(record);
受付メール_バンクチェック_送信ボタン(record);
承認メール送信ボタン(record);
定期駐車場プラン入力(record);
バンクチェック登録ボタン(record);


+ 1
- 0
src/common/rest-api-client.ts 查看文件

@@ -40,6 +40,7 @@ export const makeSubTableRecordData = (data: { [key: string]: any }[]) => {
} = { value: {} };
Object.keys(row).forEach((key) => {
const val = get(row, key);
console.log("HEIHEI", { key, row, val });
obj.value[key] = val;
});
return obj;


+ 2
- 1
src/mypage/メール.ts 查看文件

@@ -8,7 +8,8 @@ export const EmailID = {
利用者情報変更完了: "利用者情報変更完了",
振替頻度変更完了: "振替頻度変更完了",
プラン変更完了: "プラン変更完了",
申込受付: "申込受付",
申込受付_バンクチェック: "申込受付_バンクチェック",
申込受付_ゆうちょ: "申込受付_ゆうちょ",
申込承認: "申込承認",
定期選考_一斉通知: "定期選考_一斉通知",
定期選考_当選のお知らせ: "定期選考_当選のお知らせ",


+ 3
- 2
src/types/入金予定結果.ts 查看文件

@@ -1,7 +1,6 @@
import { KintoneRecordField } from "@kintone/rest-api-client";
import { AppRecord } from ".";
import get from "lodash/get";
import set from "lodash/set";
import has from "lodash/has";

const F = {
@@ -64,7 +63,9 @@ export const 保証金明細行データ作成 = (data: object): 保証金明細

Object.keys(row).forEach((target) => {
if (has(data, target)) {
set(row, target + ".value", get(data, target));
if (target === "保証金明細_金額" || target === "保証金明細_名称") {
row[target].value = get(data, target) ?? "";
}
}
});



+ 14
- 12
src/types/定期申込予約.ts 查看文件

@@ -7,14 +7,15 @@ const F = {
利用開始希望日: "利用開始希望日",
駐車場名: "駐車場",
定期駐車料金: "定期駐車料金",
振込期日: "振込期日",
日割り分_月: "日割り分_月",
日割り分_金額: "日割り分_金額",
請求対象分_月: "請求対象分_月",
請求対象分_金額: "請求対象分_金額",
初回振り込み合計額: "初回振り込み合計額",
// 振込期日: "振込期日",
// 日割り分_月: "日割り分_月",
// 日割り分_金額: "日割り分_金額",
// 請求対象分_月: "請求対象分_月",
// 請求対象分_金額: "請求対象分_金額",
// 初回振り込み合計額: "初回振り込み合計額",
自動承認契約情報: "自動承認契約情報",
受付メール送信日時: "受付メール送信日時",
受付メール送信日時_バンクチェック: "受付メール送信日時_バンクチェック",
受付メール送信日時_ゆうちょ: "受付メール送信日時_ゆうちょ",
承認メール送信日時: "承認メール送信日時",
初回入金予定_必要分: "初回入金予定_必要分",
初回入金予定_初月分入金予定: "初回入金予定_初月分入金予定",
@@ -67,7 +68,7 @@ export type 定期申込予約 = AppRecord & {
台数: KintoneRecordField.SingleLineText;
防犯登録番号: KintoneRecordField.SingleLineText;
請求対象分_月: KintoneRecordField.Number;
[F.初回振り込み合計額]: KintoneRecordField.Number;
// [F.初回振り込み合計額]: KintoneRecordField.Number;
メールアドレス: KintoneRecordField.SingleLineText;
受付日時: KintoneRecordField.DateTime;
学生手帳: KintoneRecordField.SingleLineText;
@@ -84,18 +85,19 @@ export type 定期申込予約 = AppRecord & {
車室番号: KintoneRecordField.SingleLineText;
[F.ParkingNavi駐車場]: KintoneRecordField.SingleLineText;
[F.駐車場名]: KintoneRecordField.SingleLineText;
[F.振込期日]: KintoneRecordField.Date;
// [F.振込期日]: KintoneRecordField.Date;
日割り分_金額: KintoneRecordField.Number;
自動承認メモ: KintoneRecordField.MultiLineText;
車両番号: KintoneRecordField.SingleLineText;
[F.請求対象分_金額]: KintoneRecordField.Number;
// [F.請求対象分_金額]: KintoneRecordField.Number;
[F.ParkingNaviプラン]: KintoneRecordField.SingleLineText;
[F.日割り分_月]: KintoneRecordField.Number;
// [F.日割り分_月]: KintoneRecordField.Number;
支払方法: KintoneRecordField.Dropdown;
[F.自動承認ステータス]: KintoneRecordField.SingleLineText;
[F.状態]: KintoneRecordField.Dropdown;
[F.自動承認契約情報]: KintoneRecordField.Number;
[F.受付メール送信日時]: KintoneRecordField.DateTime;
[F.受付メール送信日時_バンクチェック]: KintoneRecordField.DateTime;
[F.受付メール送信日時_ゆうちょ]: KintoneRecordField.DateTime;
[F.承認メール送信日時]: KintoneRecordField.DateTime;
[F.初回入金予定_必要分]: KintoneRecordField.CheckBox;
[F.初回入金予定_初月分入金予定]: KintoneRecordField.Number;


正在加载...
取消
保存