瀏覽代碼

精算履歴取得対応

develop
sosuke.iwabuchi 2 年之前
父節點
當前提交
d7474e9e28
共有 11 個檔案被更改,包括 79 行新增30 行删除
  1. +1
    -1
      src/api/app/receipt-issuing-order.ts
  2. +7
    -0
      src/api/custom/hello-techno/index.ts
  3. +1
    -16
      src/api/custom/hello-techno/receipt-issuing-order.ts
  4. +2
    -2
      src/pages/app/hooks/useReceiptIssuingOrderConfirm.tsx
  5. +25
    -1
      src/pages/dashboard/receipt-issuing-order/custom/hello-techno/create.tsx
  6. +1
    -1
      src/pages/dashboard/receipt-issuing-order/custom/hello-techno/detail.tsx
  7. +32
    -5
      src/pages/dashboard/receipt-issuing-order/custom/hello-techno/hooks/useInputReceiptStep.tsx
  8. +0
    -1
      src/pages/dashboard/receipt-issuing-order/custom/hello-techno/hooks/useSelectParkingStep.tsx
  9. +2
    -2
      src/routes/path.ts
  10. +3
    -0
      src/theme/index.tsx
  11. +5
    -1
      src/utils/datetime.ts

+ 1
- 1
src/api/app/receipt-issuing-order.ts 查看文件

@@ -22,7 +22,7 @@ export type AppReceiptIssuingOrder = {

// 領収証確定
export type ConfirmRequest = {
id: string;
access_token: string;
receipt_name: string;
timestamp: string;
};


+ 7
- 0
src/api/custom/hello-techno/index.ts 查看文件

@@ -15,6 +15,11 @@ export type HTAdjustData = {
parking_management_code: string;
adjust_seq_no: number;
adjust_datetime: string;

tax_charge: number;
putin_datetime: string;
adjust_type: string;
amount: number;
};

export type HTCustomersResponse = {
@@ -53,6 +58,8 @@ export const getHTParkings = async (data: HTParkingsRequest) => {

export type HTAdjustDataRequest = {
customer_code: string;
parking_management_code: string;
adjust_seq_no: string;
};

export type HTAdjustDataResponse = {


+ 1
- 16
src/api/custom/hello-techno/receipt-issuing-order.ts 查看文件

@@ -8,22 +8,7 @@ import {
} from "api";
import { ReceiptIssuingOrder } from "api/receipt-issuing-order";
import { getUrl } from "api/url";

export type HTCustomer = {
customer_code: string;
name: string;
};
export type HTParking = {
customer_code: string;
parking_management_code: string;
name: string;
};
export type HTAdjustData = {
customer_code: string;
parking_management_code: string;
adjust_seq_no: number;
adjust_datetime: string;
};
import { HTCustomer } from ".";

export type CreateReceiptIssuingOrderRequest = {
customer_code: string;


+ 2
- 2
src/pages/app/hooks/useReceiptIssuingOrderConfirm.tsx 查看文件

@@ -21,7 +21,7 @@ const schema = Yup.object().shape({
});

export default function useReceiptIssuingOrderConfirm() {
const { receiptIssuingOrder: order, fetch } = useApp();
const { receiptIssuingOrder: order, fetch, token } = useApp();
const { success, error } = useSnackbarCustom();
const { setShowBackDrop } = useBackDrop();

@@ -46,7 +46,7 @@ export default function useReceiptIssuingOrderConfirm() {
onAgree: () => {
if (!order) return;
api.callAPI({
id: order.id,
access_token: token,
receipt_name: receiptName,
timestamp: order.updated_at,
});


+ 25
- 1
src/pages/dashboard/receipt-issuing-order/custom/hello-techno/create.tsx 查看文件

@@ -11,6 +11,7 @@ import { createReceiptIssuingOrder } from "api/custom/hello-techno/receipt-issui
import useSnackbarCustom from "hooks/useSnackbarCustom";
import useBackDrop from "hooks/useBackDrop";
import { getValue } from "components/hook-form/RHFAutoComplete";
import { getHTAdjustData } from "api/custom/hello-techno";

export default function ReceiptIssuingOrderCreate() {
const { setHeaderTitle, setTabs } = useDashboard(
@@ -59,9 +60,32 @@ export default function ReceiptIssuingOrderCreate() {
};
};

const adjustDataAPI = useAPICall({
apiMethod: getHTAdjustData,
backDrop: true,
onSuccess: ({ data }) => {
inputReceiptStep.setAdjustData(data);
setMode("input_receipt");
},
onFailed: () => {
error("精算履歴が存在しません");
},
});

const selectParkingStep = useSelectParkingStep({
onNext: () => {
setMode("input_receipt");
const { customerCode, parkingManagementCode, adjustSeqNo } =
getFormData();
if (adjustSeqNo) {
adjustDataAPI.callAPI({
customer_code: getValue(customerCode),
parking_management_code: getValue(parkingManagementCode),
adjust_seq_no: adjustSeqNo,
});
} else {
inputReceiptStep.setAdjustData(null);
setMode("input_receipt");
}
},
});



+ 1
- 1
src/pages/dashboard/receipt-issuing-order/custom/hello-techno/detail.tsx 查看文件

@@ -79,7 +79,7 @@ export default function ReceiptIssuingOrderDetail() {
{
title: "担当者",
value: order.handler_name,
end: <Button sx={{ minWidth: 80 }}>担当変更</Button>,
// end: <Button sx={{ minWidth: 80 }}>担当変更</Button>,
},
{ title: "SMS送信先", value: order.sms_phone_number },
{ title: "依頼日", value: formatDateStr(order.order_datetime) },


+ 32
- 5
src/pages/dashboard/receipt-issuing-order/custom/hello-techno/hooks/useInputReceiptStep.tsx 查看文件

@@ -1,6 +1,7 @@
import { yupResolver } from "@hookform/resolvers/yup";
import { Box, Button, Stack, TextField, Typography } from "@mui/material";
import { HasChildren } from "@types";
import { HTAdjustData, getHTAdjustData } from "api/custom/hello-techno";
import {
FormProvider,
RHFAutoComplete,
@@ -12,8 +13,9 @@ import {
getValue,
} from "components/hook-form/RHFAutoComplete";
import RHFDatePicker from "components/hook-form/RHFDatePicker";
import { useState } from "react";
import { useEffect, useMemo, useState } from "react";
import { useForm } from "react-hook-form";
import { dateTimeParse } from "utils/datetime";
import * as Yup from "yup";

type AreaBoxProps = {
@@ -39,7 +41,7 @@ type Props = {
onPrev?: VoidFunction;
};
export default function useInputReceiptStep({ onNext, onPrev }: Props) {
const [adjustSeqNo, setAdjustSeqNo] = useState("");
const [adjustData, _setAdjustData] = useState<HTAdjustData | null>(null);

const form = useForm<FormProps>({
defaultValues: {
@@ -71,19 +73,30 @@ export default function useInputReceiptStep({ onNext, onPrev }: Props) {
}
};

const setAdjustData = (data: HTAdjustData | null) => {
_setAdjustData(data);
};

const readOnly = useMemo(() => {
return adjustData !== null;
}, [adjustData]);

const element = (
<FormProvider methods={form} onSubmit={form.handleSubmit(handleSubmit)}>
<Stack spacing={2} sx={{ p: 1, m: 1 }}>
<AreaBox title="利用日">
<RHFDatePicker name="date" size="small" />
<RHFDatePicker name="date" size="small" readOnly={readOnly} />
</AreaBox>
<AreaBox title="金額">
<RHFTextField
type="number"
name="amount"
size="small"
InputProps={{ endAdornment: <div>円</div> }}
InputProps={{
endAdornment: <div style={{ color: "black !important" }}>円</div>,
}}
sx={{ maxWidth: 150 }}
readOnly={readOnly}
/>
</AreaBox>
<AreaBox title="メモ">
@@ -100,6 +113,20 @@ export default function useInputReceiptStep({ onNext, onPrev }: Props) {
</Stack>
</FormProvider>
);
useEffect(() => {
if (adjustData) {
form.setValue("amount", String(adjustData.amount));
form.setValue("date", dateTimeParse(adjustData.adjust_datetime));
} else {
form.setValue("amount", "");
form.setValue("date", null);
}
}, [adjustData]);

return { element, values: form.getValues, setValue: form.setValue };
return {
element,
values: form.getValues,
setValue: form.setValue,
setAdjustData,
};
}

+ 0
- 1
src/pages/dashboard/receipt-issuing-order/custom/hello-techno/hooks/useSelectParkingStep.tsx 查看文件

@@ -10,7 +10,6 @@ import {
import {
AutoCompleteOption,
AutoCompleteOptionType,
getValue,
} from "components/hook-form/RHFAutoComplete";
import useAPICall from "hooks/useAPICall";
import { useEffect, useState } from "react";


+ 2
- 2
src/routes/path.ts 查看文件

@@ -39,9 +39,9 @@ const PATHS = {

// APP
[makePathKey(PageID.APP_RECEIPT_ISSUING_ORDER_INDEX)]:
"/app/receipt-issuing-oreder/:token",
"/app/receipt-issuing-order/:token",
[makePathKey(PageID.APP_RECEIPT_ISSUING_ORDER_MAIL_ORDER)]:
"/app/receipt-issuing-oreder/mail",
"/app/receipt-issuing-order/mail",

// 契約関連
[makePathKey(PageID.DASHBOARD_CONTRACT_LIST)]:


+ 3
- 0
src/theme/index.tsx 查看文件

@@ -155,6 +155,9 @@ theme = {
"&.Mui-disabled:before": {
borderBottomStyle: "none",
},
"&.Mui-disabled": {
WebkitTextFillColor: "black !important",
},
},
},
},


+ 5
- 1
src/utils/datetime.ts 查看文件

@@ -2,6 +2,7 @@ import { format, isValid, parse, parseISO } from "date-fns";

export const DEFAULT_DATE_FORMAT = "yyyy/MM/dd";
export const DEFAULT_DATE_TIME_FORMAT = "yyyy/MM/dd HH:mm:ss";
export const DEFAULT_DATE_TIME_FORMAT_ANOTHER1 = "yyyy-MM-dd HH:mm:ss";
export const DEFAULT_YYYYMM_FORMAT = "yyyyMM";

type Input = Date | string | null | undefined;
@@ -35,7 +36,10 @@ export const dateParse = (source: Input): Date | null => {
};

export const dateTimeParse = (source: Input): Date | null => {
return parseFromFormat(source, DEFAULT_DATE_TIME_FORMAT);
return (
parseFromFormat(source, DEFAULT_DATE_TIME_FORMAT) ??
parseFromFormat(source, DEFAULT_DATE_TIME_FORMAT_ANOTHER1)
);
};

const parseFromFormat = (source: Input, format: string): Date | null => {


Loading…
取消
儲存