瀏覽代碼

親子アカウント対応

develop
sosuke.iwabuchi 1 年之前
父節點
當前提交
e171ea1a2e
共有 5 個檔案被更改,包括 72 行新增10 行删除
  1. +24
    -10
      src/apps/定期申込予約/自動承認.ts
  2. +33
    -0
      src/apps/顧客マスタ/index.ts
  3. +2
    -0
      src/mypage/IC定期.ts
  4. +9
    -0
      src/rest-api/顧客マスタ.ts
  5. +4
    -0
      src/types/顧客マスタ.ts

+ 24
- 10
src/apps/定期申込予約/自動承認.ts 查看文件

@@ -22,7 +22,7 @@ import { 定期駐車場プランマスタ } from "@/types/定期駐車場プラ
import { 自動承認グループ } from "@/types/自動承認グループ"; import { 自動承認グループ } from "@/types/自動承認グループ";
import { 車室情報管理, 車室情報管理フィールド名 } from "@/types/車室情報管理"; import { 車室情報管理, 車室情報管理フィールド名 } from "@/types/車室情報管理";
import { 車室情報2, 車室情報2モデル } from "@/types/車室情報2"; import { 車室情報2, 車室情報2モデル } from "@/types/車室情報2";
import { 顧客マスタフィールド名 } from "@/types/顧客マスタ";
import { 顧客マスタ, 顧客マスタフィールド名 } from "@/types/顧客マスタ";
import { sprintf } from "sprintf"; import { sprintf } from "sprintf";
import { CancelError, Message } from "@/exception"; import { CancelError, Message } from "@/exception";
import { dateParse, formatDateStr, now } from "@/common/datetime"; import { dateParse, formatDateStr, now } from "@/common/datetime";
@@ -197,10 +197,13 @@ export class 申込 {
private async 顧客マスタ取得() { private async 顧客マスタ取得() {
const customer = await get顧客マスタ({ const customer = await get顧客マスタ({
メールアドレス: this.定期申込予約.メールアドレス.value, メールアドレス: this.定期申込予約.メールアドレス.value,
親アカウント: true,
必須: false, 必須: false,
}); });
if (customer) { if (customer) {
const confirm = await ShowConfirmDialog({ const confirm = await ShowConfirmDialog({
showDenyButton: true,
denyButtonText: "子アカウント新規作成",
html: sprintf( html: sprintf(
"<p>既存顧客<a href='%s' target='_blank'>[%s]</a>様へ契約を追加しますか</p>", "<p>既存顧客<a href='%s' target='_blank'>[%s]</a>様へ契約を追加しますか</p>",
getDetailUrl(AppID.顧客マスタ, customer.$id.value), getDetailUrl(AppID.顧客マスタ, customer.$id.value),
@@ -208,20 +211,24 @@ export class 申込 {
), ),
}); });


if (!confirm.isConfirmed) throw new CancelError();

this.顧客情報.顧客コード = Number(
customer[顧客マスタフィールド名.顧客コード].value
);
this.顧客情報.IC定期利用者IC = Number(
customer[顧客マスタフィールド名.IC定期関連情報_ユーザーID].value
);
if (confirm.isConfirmed) {
this.顧客情報.顧客コード = Number(
customer[顧客マスタフィールド名.顧客コード].value
);
this.顧客情報.IC定期利用者IC = Number(
customer[顧客マスタフィールド名.IC定期関連情報_ユーザーID].value
);
} else if (confirm.isDenied) {
await this.顧客マスタ作成(customer);
} else {
throw new CancelError();
}
} else { } else {
await this.顧客マスタ作成(); await this.顧客マスタ作成();
} }
} }


private async 顧客マスタ作成() {
private async 顧客マスタ作成(親顧客マスタ?: 顧客マスタ) {
const F = 顧客マスタフィールド名; const F = 顧客マスタフィールド名;
const 顧客コード = await getNext顧客コード(); const 顧客コード = await getNext顧客コード();


@@ -248,6 +255,7 @@ export class 申込 {


const data = makeRecordData({ const data = makeRecordData({
[F.顧客コード]: String(顧客コード), [F.顧客コード]: String(顧客コード),
[F.顧客コード親]: 親顧客マスタ?.CustomerCodeParent.value ?? "",
[F.顧客名]: this.定期申込予約.氏名.value, [F.顧客名]: this.定期申込予約.氏名.value,
[F.顧客名カナ]: this.定期申込予約.フリガナ.value, [F.顧客名カナ]: this.定期申込予約.フリガナ.value,
[F.電話番号]: this.定期申込予約.電話番号.value, [F.電話番号]: this.定期申込予約.電話番号.value,
@@ -271,6 +279,9 @@ export class 申込 {
zip_code: 郵便番号.replace(/-/g, ""), zip_code: 郵便番号.replace(/-/g, ""),
address1: 住所, address1: 住所,
phone_number: this.定期申込予約.電話番号.value, phone_number: this.定期申込予約.電話番号.value,
parent_user_id: 親顧客マスタ
? 親顧客マスタ.IC定期関連情報_ユーザーID.value
: undefined,
}, },
message message
); );
@@ -281,6 +292,9 @@ export class 申込 {
} }
const 利用者ID = res.id; const 利用者ID = res.id;
data[F.IC定期関連情報_ユーザーID] = { value: String(利用者ID) }; data[F.IC定期関連情報_ユーザーID] = { value: String(利用者ID) };
data[F.IC定期関連情報_親ユーザーID] = {
value: 親顧客マスタ?.IC定期関連情報_親ユーザーID.value ?? "",
};
this.顧客情報.IC定期利用者IC = 利用者ID; this.顧客情報.IC定期利用者IC = 利用者ID;
} }




+ 33
- 0
src/apps/顧客マスタ/index.ts 查看文件

@@ -37,6 +37,7 @@ setup(() => {


const res = await 利用者情報更新({ const res = await 利用者情報更新({
user_id: record.IC定期関連情報_ユーザーID.value, user_id: record.IC定期関連情報_ユーザーID.value,
parent_user_id: record.IC定期関連情報_親ユーザーID.value,
email: record[F.メールアドレス].value, email: record[F.メールアドレス].value,
first_name: record[F.顧客名].value, first_name: record[F.顧客名].value,
first_name_kana: record[F.顧客名カナ].value, first_name_kana: record[F.顧客名カナ].value,
@@ -60,4 +61,36 @@ setup(() => {
return event; return event;
}) })
); );

kintone.events.on(
[KintoneEvent.詳細.レコードを削除する前],
eventHnalder(async (event, { setEvent }) => {
const record = event.record as 顧客マスタ;
const F = 顧客マスタフィールド名;
// IC定期処理
if (!!record.IC定期関連情報_ユーザーID.value) {
await showLoadingDialog();
const message = new MessageBag();
const res = await 利用者情報削除(
{
user_id: record.IC定期関連情報_ユーザーID.value,
},
message
);

if (res === false) {
ErrorDialog.fire({
text: "IC定期連携に失敗しました " + message.getGeneralMessage(),
});
return false;
}

await SuccessDialog.fire({
text: "IC定期連携成功",
});
}

return event;
})
);
}); });

+ 2
- 0
src/mypage/IC定期.ts 查看文件

@@ -10,6 +10,7 @@ export type 利用者情報新規作成Request = {
zip_code: string; zip_code: string;
address1: string; address1: string;
phone_number: string; phone_number: string;
parent_user_id?: string;
}; };
export type 利用者情報新規作成Response = { export type 利用者情報新規作成Response = {
id: number; id: number;
@@ -34,6 +35,7 @@ export type 利用者情報更新Request = {
zip_code: string; zip_code: string;
address1: string; address1: string;
phone_number: string; phone_number: string;
parent_user_id?: string;
}; };
export type 利用者情報更新Response = { export type 利用者情報更新Response = {
id: number; id: number;


+ 9
- 0
src/rest-api/顧客マスタ.ts 查看文件

@@ -13,6 +13,7 @@ type Props = {
顧客コード?: number; 顧客コード?: number;
メールアドレス?: string; メールアドレス?: string;
電話番号?: string; 電話番号?: string;
親アカウント?: boolean;
必須?: boolean; 必須?: boolean;
}; };
export const get顧客マスタ = async ({ export const get顧客マスタ = async ({
@@ -20,6 +21,7 @@ export const get顧客マスタ = async ({
顧客コード, 顧客コード,
メールアドレス, メールアドレス,
電話番号, 電話番号,
親アカウント,
必須 = true, 必須 = true,
}: Props): Promise<顧客マスタ | null> => { }: Props): Promise<顧客マスタ | null> => {
const builder = new QueryBuilder(); const builder = new QueryBuilder();
@@ -37,6 +39,13 @@ export const get顧客マスタ = async ({
builder.where(顧客マスタフィールド名.電話番号, 電話番号); builder.where(顧客マスタフィールド名.電話番号, 電話番号);
} }


if (親アカウント === true) {
builder.where(顧客マスタフィールド名.顧客コード親, "");
}
if (親アカウント === false) {
builder.where(顧客マスタフィールド名.顧客コード親, "", "!=");
}

const { records } = await client.record.getRecords<顧客マスタ>({ const { records } = await client.record.getRecords<顧客マスタ>({
app: AppID.顧客マスタ, app: AppID.顧客マスタ,
query: builder.build(), query: builder.build(),


+ 4
- 0
src/types/顧客マスタ.ts 查看文件

@@ -3,6 +3,7 @@ import { AppRecord } from ".";


const F = { const F = {
顧客コード: "CustomerCode", 顧客コード: "CustomerCode",
顧客コード親: "CustomerCodeParent",
銀行支店コード: "ChargedBankBranchCode", 銀行支店コード: "ChargedBankBranchCode",
引落預金種別: "ChargedDepositType", 引落預金種別: "ChargedDepositType",
引落口座名義人カナ: "ChargedAccountsKana", 引落口座名義人カナ: "ChargedAccountsKana",
@@ -23,6 +24,7 @@ const F = {
支払方法: "支払方法", 支払方法: "支払方法",


IC定期関連情報_ユーザーID: "IC定期関連情報_ユーザーID", IC定期関連情報_ユーザーID: "IC定期関連情報_ユーザーID",
IC定期関連情報_親ユーザーID: "IC定期関連情報_親ユーザーID",
} as const; } as const;


// export const 支払種別Dropdown = { // export const 支払種別Dropdown = {
@@ -49,6 +51,7 @@ export type 顧客マスタ = AppRecord & {
[F.引落預金種別]: KintoneRecordField.Number; [F.引落預金種別]: KintoneRecordField.Number;
[F.SMBC契約番号]: KintoneRecordField.SingleLineText; [F.SMBC契約番号]: KintoneRecordField.SingleLineText;
[F.顧客コード]: KintoneRecordField.Number; [F.顧客コード]: KintoneRecordField.Number;
[F.顧客コード親]: KintoneRecordField.Number;
[F.顧客名]: KintoneRecordField.SingleLineText; [F.顧客名]: KintoneRecordField.SingleLineText;
SMBC口座名義_1: KintoneRecordField.SingleLineText; SMBC口座名義_1: KintoneRecordField.SingleLineText;
SMBC処理完了: KintoneRecordField.Dropdown; SMBC処理完了: KintoneRecordField.Dropdown;
@@ -90,4 +93,5 @@ export type 顧客マスタ = AppRecord & {
領収書名_入力: KintoneRecordField.SingleLineText; 領収書名_入力: KintoneRecordField.SingleLineText;
領収書名: KintoneRecordField.SingleLineText; 領収書名: KintoneRecordField.SingleLineText;
[F.IC定期関連情報_ユーザーID]: KintoneRecordField.Number; [F.IC定期関連情報_ユーザーID]: KintoneRecordField.Number;
[F.IC定期関連情報_親ユーザーID]: KintoneRecordField.Number;
}; };

Loading…
取消
儲存