sosuke.iwabuchi пре 2 година
родитељ
комит
21e343b071
5 измењених фајлова са 60 додато и 0 уклоњено
  1. +3
    -0
      src/api/custom/hello-techno/receipt-issuing-order.ts
  2. +1
    -0
      src/pages/dashboard/receipt-issuing-order/custom/hello-techno/create.tsx
  3. +7
    -0
      src/pages/dashboard/receipt-issuing-order/custom/hello-techno/detail.tsx
  4. +38
    -0
      src/pages/dashboard/receipt-issuing-order/custom/hello-techno/hooks/useInputReceiptStep.tsx
  5. +11
    -0
      src/utils/tax.ts

+ 3
- 0
src/api/custom/hello-techno/receipt-issuing-order.ts Прегледај датотеку

@@ -16,6 +16,7 @@ export type CreateReceiptIssuingOrderRequest = {
adjust_seq_no?: string | number;
receipt_use_date: Date | null;
receipt_amount: string | number;
tax_amount: string | number;
memo?: string;
sms_phone_number: string;
};
@@ -43,6 +44,8 @@ export type ReceiptIssuingOrderHTCustom = {
customer_name: string;
parking_name: string;
adjust_seq_no?: number;
tax_rate?: number;
tax_amount?: number;
} & ReceiptIssuingOrder;

export type ReceiptIssuingOrdersRequest = {


+ 1
- 0
src/pages/dashboard/receipt-issuing-order/custom/hello-techno/create.tsx Прегледај датотеку

@@ -136,6 +136,7 @@ export default function ReceiptIssuingOrderCreate() {
adjust_seq_no: formData.adjustSeqNo,
receipt_use_date: formData.date,
receipt_amount: formData.amount,
tax_amount: formData.tax_amount,
sms_phone_number: formData.address,
memo: formData.memo,
});


+ 7
- 0
src/pages/dashboard/receipt-issuing-order/custom/hello-techno/detail.tsx Прегледај датотеку

@@ -112,6 +112,13 @@ export default function ReceiptIssuingOrderDetail() {
? order.receipt_amount.toLocaleString() + "円"
: "-",
},
{
title: "消費税(内税)",
value:
isNumber(order.tax_amount) && isNumber(order.tax_rate)
? order.tax_amount.toLocaleString() + "円(" + order.tax_rate + "%)"
: "-",
},
{ title: "備考", value: order.memo },
];
}, [order]);


+ 38
- 0
src/pages/dashboard/receipt-issuing-order/custom/hello-techno/hooks/useInputReceiptStep.tsx Прегледај датотеку

@@ -16,6 +16,7 @@ import RHFDatePicker from "components/hook-form/RHFDatePicker";
import { useEffect, useMemo, useState } from "react";
import { useForm } from "react-hook-form";
import { dateTimeParse } from "utils/datetime";
import { calcInnerTax } from "utils/tax";
import * as Yup from "yup";

type AreaBoxProps = {
@@ -32,6 +33,7 @@ function AreaBox({ title, children }: AreaBoxProps) {

type FormProps = {
amount: string;
tax_amount: string;
date: Date | null;
memo: string;
};
@@ -46,6 +48,7 @@ export default function useInputReceiptStep({ onNext, onPrev }: Props) {
const form = useForm<FormProps>({
defaultValues: {
amount: "",
tax_amount: "",
date: null,
memo: "",
},
@@ -55,6 +58,7 @@ export default function useInputReceiptStep({ onNext, onPrev }: Props) {
.required("必須項目です")
.typeError("正しく入力してください"),
amount: Yup.number().required("必須項目です"),
tax_amount: Yup.number().required("必須項目です"),
memo: Yup.string().nullable(),
})
),
@@ -77,6 +81,17 @@ export default function useInputReceiptStep({ onNext, onPrev }: Props) {
_setAdjustData(data);
};

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

const calcTax = () => {
if (!canCalcTax) return;
const amount = Number(form.getValues("amount"));
if (!amount) return;
form.setValue("tax_amount", String(calcInnerTax(amount)));
};

const readOnly = useMemo(() => {
return adjustData !== null;
}, [adjustData]);
@@ -99,6 +114,27 @@ export default function useInputReceiptStep({ onNext, onPrev }: Props) {
readOnly={readOnly}
/>
</AreaBox>
<AreaBox title="消費税(内税)">
<Stack direction="row" spacing={2}>
<RHFTextField
type="number"
name="tax_amount"
size="small"
InputProps={{
endAdornment: (
<div style={{ color: "black !important" }}>円</div>
),
}}
sx={{ maxWidth: 150 }}
readOnly={readOnly}
/>
{canCalcTax && (
<Button onClick={calcTax} variant="text">
計算
</Button>
)}
</Stack>
</AreaBox>
<AreaBox title="メモ">
<RHFTextField name="memo" size="small" multiline rows={3} />
</AreaBox>
@@ -116,9 +152,11 @@ export default function useInputReceiptStep({ onNext, onPrev }: Props) {
useEffect(() => {
if (adjustData) {
form.setValue("amount", String(adjustData.amount));
form.setValue("tax_amount", String(adjustData.tax_charge));
form.setValue("date", dateTimeParse(adjustData.adjust_datetime));
} else {
form.setValue("amount", "");
form.setValue("tax_amount", "");
form.setValue("date", null);
}
}, [adjustData]);


+ 11
- 0
src/utils/tax.ts Прегледај датотеку

@@ -0,0 +1,11 @@
export const TAX_RATE_DEFAULT = 0.1;

/**
* 内税計算
*/
export function calcInnerTax(
totalAmount: number,
rate: number = TAX_RATE_DEFAULT
) {
return Math.floor((totalAmount * rate) / (1 + rate));
}

Loading…
Откажи
Сачувај