부가세참고

This commit is contained in:
focp212@naver.com
2025-10-02 15:57:31 +09:00
parent 300a21851d
commit ce2f2aaae9
7 changed files with 161 additions and 21 deletions

View File

@@ -0,0 +1,29 @@
import axios from 'axios';
import { API_URL_VAT_RETURN } from '@/shared/api/api-url-vat-return';
import { resultify } from '@/shared/lib/resultify';
import { CBDCAxiosError } from '@/shared/@types/error';
import {
VatReturnReferenceRequestResponse,
VatReturnReferenceRequestParams,
} from '../model/types';
import {
useMutation,
UseMutationOptions
} from '@tanstack/react-query';
export const vatReturnReferenceRequest = (params: VatReturnReferenceRequestParams) => {
return resultify(
axios.post<VatReturnReferenceRequestResponse>(API_URL_VAT_RETURN.vatReturnReferenceRequest(), params),
);
};
export const useVatReturnReferenceRequestMutation = (options?: UseMutationOptions<VatReturnReferenceRequestResponse, CBDCAxiosError, VatReturnReferenceRequestParams>) => {
const mutation = useMutation<VatReturnReferenceRequestResponse, CBDCAxiosError, VatReturnReferenceRequestParams>({
...options,
mutationFn: (params: VatReturnReferenceRequestParams) => vatReturnReferenceRequest(params),
});
return {
...mutation,
};
};

View File

@@ -0,0 +1,29 @@
import axios from 'axios';
import { API_URL_VAT_RETURN } from '@/shared/api/api-url-vat-return';
import { resultify } from '@/shared/lib/resultify';
import { CBDCAxiosError } from '@/shared/@types/error';
import {
VatReturnTaxInvoiceResponse,
VatReturnTaxInvoiceParams,
} from '../model/types';
import {
useMutation,
UseMutationOptions
} from '@tanstack/react-query';
export const vatReturnTaxInvoice = (params: VatReturnTaxInvoiceParams) => {
return resultify(
axios.post<VatReturnTaxInvoiceResponse>(API_URL_VAT_RETURN.vatReturnTaxInvoice(), params),
);
};
export const useVatReturnTaxInvoiceMutation = (options?: UseMutationOptions<VatReturnTaxInvoiceResponse, CBDCAxiosError, VatReturnTaxInvoiceParams>) => {
const mutation = useMutation<VatReturnTaxInvoiceResponse, CBDCAxiosError, VatReturnTaxInvoiceParams>({
...options,
mutationFn: (params: VatReturnTaxInvoiceParams) => vatReturnTaxInvoice(params),
});
return {
...mutation,
};
};

View File

@@ -83,3 +83,67 @@ export interface VatReturnDetailResponse {
supplierCompanyName?: string;
supplierCeoName?: string;
};
export enum TaxType {
};
export interface VatReturnReferenceRequestParams {
mid: string;
startMonth: string;
endMonth: string;
taxType: string,
requestorName: string;
contactNumber: string;
email: string;
};
export interface VatReturnReferenceRequestResponse {
requestId: number;
mid: string;
requestPeriod: string;
taxTypeDescription: string;
requestDateTime: string;
requestStatus: string;
requestorName: string;
contactNumber: string;
email: string;
};
export interface VatReturnTaxInvoiceParams {
taxInvoiceNumber: string;
}
export interface VatReturnTaxInvoiceResponse {
supplierInfo: SupplierInfo;
recipientInfo: RecipientInfo;
issueDate: string;
supplyAmount: number;
taxAmount: number;
totalAmount: number;
transactionDetails: TransactionDetails;
};
export interface SupplierInfo {
businessRegistrationNumber: string;
companyName: string;
ceoName: string;
address: string;
businessType: string;
businessItem: string;
};
export interface RecipientInfo {
businessRegistrationNumber: string;
companyName: string;
ceoName: string;
address: string;
businessType: string;
businessItem: string;
email: string;
};
export interface TransactionDetails {
transactionPeriod: string;
itemName: string;
specification: string;
quantity: number;
unitPrice: number;
supplyAmount: number;
taxAmount: number;
remarks: string;
};

View File

@@ -129,9 +129,6 @@ export const ListWrap = () => {
<div className="transaction-list">
{ getListDateGroup() }
</div>
<div className="apply-row bottom-padding">
<button className="btn-50 btn-blue flex-1">수기발행</button>
</div>
<ListFilter
filterOn={ filterOn }
setFilterOn={ setFilterOn }

View File

@@ -6,34 +6,45 @@ import { ReferenceRequestSuccess } from './reference-request-success';
import { ReferenceRequestFail } from './reference-request-fail';
import { FilterButtonGroups } from '@/shared/ui/filter/button-groups';
import { VatReturnTaxBtnGroups } from '../model/contant';
import { VatReturnPayTax } from '../model/types';
import { VatReturnPayTax, VatReturnReferenceRequestParams, VatReturnReferenceRequestResponse } from '../model/types';
import { useStore } from '@/shared/model/store';
import { useVatReturnReferenceRequestMutation } from '../api/use-vat-reference-request-mutation';
export const ReferenceWrap = () => {
const midOptions = useStore.getState().UserStore.selectOptionsMids;
const [success, setSuccess] = useState<boolean>(false);
const [successPageOn, setSuccessPageOn] = useState<boolean>(false);
const [failPageOn, setFailPageOn] = useState<boolean>(false);
const [mid, setMid] = useState<string>('nictest00m');
const [mid, setMid] = useState<string>('');
const [startDate, setStartDate] = useState<string>(moment().format('YYYY.MM.DD'));
const [endDate, setEndDate] = useState<string>(moment().format('YYYY.MM.DD'));
const [payTax, setPayTax] = useState<VatReturnPayTax>(VatReturnPayTax.Tax);
const [email, setEmail] = useState<string>('');
const midOptions = useStore.getState().UserStore.selectOptionsMids;
const { mutateAsync: vatReturnReferenceRequest } = useVatReturnReferenceRequestMutation();
let EmailOptions = [
{name: 'focp212@naver.com', value: 'focp212@naver.com'}
];
const onClickToResquest = () => {
if(success){
let params: VatReturnReferenceRequestParams = {
mid: mid,
startMonth: startDate,
endMonth: endDate,
taxType: payTax,
requestorName: '',
contactNumber: '',
email: email
}
vatReturnReferenceRequest(params).then((rs: VatReturnReferenceRequestResponse) => {
setSuccessPageOn(true);
}
else{
}).catch((error) => {
setFailPageOn(true);
}
});
};
return (

View File

@@ -15,6 +15,8 @@ import {
useSetFooterMode,
useSetFooterCurrentPage
} from '@/widgets/sub-layout/use-sub-layout';
import { useStore } from '@/shared/model/store';
import { UserFavorite } from '@/entities/user/model/types';
export let homeReloadKey = 1;
export const setHomeReloadKey = () => {
@@ -22,6 +24,7 @@ export const setHomeReloadKey = () => {
};
export const HomePage = () => {
const {
isNativeEnvironment,
openBiometricRegistrationPopup,
@@ -38,7 +41,7 @@ export const HomePage = () => {
const [bottomBannerOn, setBottomBannerOn] = useState<boolean>(false);
const [authRegisterOn, setAuthRegisterOn] = useState<boolean>(false);
const [loginSuccess, setLoginSuccess] = useState<boolean>(true);
const [favoriteItems, setFavoriteItems] = useState<Array<UserFavorite>>([]);
const checkBottomBannerOpen = () => {
if(!!bannerToday){
@@ -64,6 +67,9 @@ export const HomePage = () => {
useEffect(() => {
checkBottomBannerOpen();
checkAuthRegisterOpen();
let userFavorite = useStore.getState().UserStore.userFavorite;
setFavoriteItems(userFavorite);
}, []);
const setBottomBannerEffect = (mode: boolean) => {
@@ -86,15 +92,11 @@ export const HomePage = () => {
{/*<!-- 탭 컨텐츠 영역 -->*/}
<div className="tab-content blue">
<div className="tab-pane dashboard active">
{ loginSuccess &&
<>
<FavoriteWrapper
usingType='home'
key={ homeReloadKey }
></FavoriteWrapper>
<DayStatusBox></DayStatusBox>
</>
}
</div>
</div>
</main>

View File

@@ -4,6 +4,14 @@ import {
} from './../constants/url';
export const API_URL_VAT_RETURN = {
vatReturnTaxInvoice: () => {
// POST: 세금계산서 조회
return `${API_BASE_URL}/api/v1/${API_URL_KEY}/vat-return/tax-invoice`;
},
vatReturnReferenceRequest: () => {
// POST: 부가세 참고자료 신청
return `${API_BASE_URL}/api/v1/${API_URL_KEY}/vat-return/reference-request`;
},
vatReturnList: () => {
// POST: 세금계산서 목록 조회
return `${API_BASE_URL}/api/v1/${API_URL_KEY}/vat-return/list`;