This commit is contained in:
focp212@naver.com
2025-11-05 15:57:54 +09:00
parent 9b0e218553
commit 1bf0421e04
5 changed files with 48 additions and 141 deletions

View File

@@ -36,12 +36,16 @@ import { EmailBottomSheet } from '@/entities/common/ui/email-bottom-sheet';
import useIntersectionObserver from '@/widgets/intersection-observer';
import { useTranslation } from 'react-i18next';
import { SettlementDetail } from './detail/settlement-detail';
import { showAlert } from '@/widgets/show-alert';
import { checkGrant } from '@/shared/lib/check-grant';
export interface ListWrapProps {
startDateFromCalendar?: string;
endDateFromCalendar?: string;
};
/* 정산내역 37 */
const menuId = 37;
export const ListWrap = ({
startDateFromCalendar,
endDateFromCalendar
@@ -359,7 +363,12 @@ export const ListWrap = ({
setFilterOn(!filterOn);
};
const onClickToDownloadExcel = () => {
setEmailBottomSheetOn(true);
if(checkGrant(menuId, 'D')){
setEmailBottomSheetOn(true);
}
else{
showAlert('권한이 없습니다.');
}
};
const onRequestDownloadExcel = (userEmail?: string) => {

View File

@@ -20,7 +20,11 @@ import { useStore } from '@/shared/model/store';
import { EmailBottomSheet } from '@/entities/common/ui/email-bottom-sheet';
import useIntersectionObserver from '@/widgets/intersection-observer';
import { TaxInvoiceDetail } from './detail/tax-invoice-detail';
import { showAlert } from '@/widgets/show-alert';
import { checkGrant } from '@/shared/lib/check-grant';
/* 세금계산서 48 */
const menuId = 48;
export const ListWrap = () => {
const { t } = useTranslation();
const userMid = useStore.getState().UserStore.mid;
@@ -115,7 +119,12 @@ export const ListWrap = () => {
setSortType(sort);
};
const onClickToDownloadExcel = () => {
setEmailBottomSheetOn(true);
if(checkGrant(menuId, 'D')){
setEmailBottomSheetOn(true);
}
else{
showAlert('권한이 없습니다.');
}
};
const onRequestDownloadExcel = (userEmail?: string) => {

View File

@@ -10,7 +10,11 @@ import { getVatReturnTaxBtnGroups } from '../model/contant';
import { VatReturnPayTax, VatReturnReferenceRequestParams, VatReturnReferenceRequestResponse } from '../model/types';
import { useStore } from '@/shared/model/store';
import { useVatReturnReferenceRequestMutation } from '../api/use-vat-return-reference-request-mutation';
import { checkGrant } from '@/shared/lib/check-grant';
import { showAlert } from '@/widgets/show-alert';
/* 부가세참고 49 */
const menuId = 49;
export const ReferenceWrap = () => {
const { t } = useTranslation();
const midOptions = useStore.getState().UserStore.selectOptionsMids;
@@ -31,19 +35,25 @@ export const ReferenceWrap = () => {
const { mutateAsync: vatReturnReferenceRequest } = useVatReturnReferenceRequestMutation();
const onClickToResquest = () => {
let params: VatReturnReferenceRequestParams = {
mid: mid,
startDate: startDate,
endDate: endDate,
taxType: payTax,
email: email || userEmail
if(checkGrant(menuId, 'X')){
let params: VatReturnReferenceRequestParams = {
mid: mid,
startDate: startDate,
endDate: endDate,
taxType: payTax,
email: email || userEmail
}
vatReturnReferenceRequest(params).then((rs: VatReturnReferenceRequestResponse) => {
setSuccessPageOn(true);
}).catch((error) => {
setErrorMsg(t('vatReturn.keyInMerchantError'));
setFailPageOn(true);
});
}
vatReturnReferenceRequest(params).then((rs: VatReturnReferenceRequestResponse) => {
setSuccessPageOn(true);
}).catch((error) => {
setErrorMsg(t('vatReturn.keyInMerchantError'));
setFailPageOn(true);
});
else{
showAlert('권한이 없습니다.');
}
};
return (

View File

@@ -193,7 +193,12 @@ export const CashReceiptListPage = () => {
setTransactionType(val);
};
const onClickToNavigate = () => {
navigate(PATHS.transaction.cashReceipt.handWrittenIssuance);
if(checkGrant(menuId, 'X')){
navigate(PATHS.transaction.cashReceipt.handWrittenIssuance);
}
else{
showAlert('권한이 없습니다.');
}
};
useEffect(() => {

View File

@@ -1,126 +0,0 @@
import { useEffect, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { PATHS } from '@/shared/constants/paths';
import { useLocation } from 'react-router';
import { useNavigate } from '@/shared/lib/hooks/use-navigate';
import { useVatReturnDetailMutation } from '@/entities/vat-return/api/use-vat-return-detail-mutation';
import { HeaderType } from '@/entities/common/model/types';
import {
Breakdown,
VatReturnBreakdownParams,
VatReturnBreakdownResponse,
VatReturnDetailParams,
VatReturnDetailResponse
} from '@/entities/vat-return/model/types';
import {
useSetOnBack,
useSetHeaderTitle,
useSetHeaderType,
useSetFooterMode
} from '@/widgets/sub-layout/use-sub-layout';
import { SupplierSection } from '@/entities/vat-return/ui/section/supplier-section';
import { ReceiverSection } from '@/entities/vat-return/ui/section/receiver-section';
import { IssueSection } from '@/entities/vat-return/ui/section/issue-section';
import { AmountSection } from '@/entities/vat-return/ui/section/amount-section';
import { useVatReturnTaxInvoiceMutation } from '@/entities/vat-return/api/use-vat-return-tax-invoice-mutation';
import { VatReturnListDetailBottomSheet } from '@/entities/vat-return/ui/list-detail-bottom-sheet';
import { useVatReturnBreakdownMutation } from '@/entities/vat-return/api/use-vat-return-breakdown-mutation';
export const DetailPage = () => {
const { t } = useTranslation();
const { navigate } = useNavigate();
const location = useLocation();
let taxInvoiceNumber = location?.state.taxInvoiceNumber;
// taxInvoiceNumber = 'TAX202506300001';
const [openAmount, setOpenAmount] = useState<boolean>(false);
const [bottomSheetOn, setBottomSheetOn] = useState<boolean>(false);
const [detail, setDetail] = useState<VatReturnDetailResponse>({});
const [breakdown, setBreakdown] = useState<Array<Breakdown>>([]);
useSetHeaderTitle(t('vatReturn.taxInvoiceDetail'));
useSetHeaderType(HeaderType.RightClose);
useSetOnBack(() => {
navigate(PATHS.vatReturn.list);
});
useSetFooterMode(false);
const { mutateAsync: vatReturnTaxInvoice } = useVatReturnTaxInvoiceMutation();
const { mutateAsync: vatReturnDetail } = useVatReturnDetailMutation();
const { mutateAsync: vatReturnBreakdown } = useVatReturnBreakdownMutation();
const callTaxInvoice = () => {
let params: VatReturnDetailParams = {
taxInvoiceNumber: taxInvoiceNumber,
};
vatReturnDetail(params).then((rs: VatReturnDetailResponse) => {
setDetail(rs);
});
};
const callVatReturnBreakdown = async() => {
let params: VatReturnBreakdownParams = {
taxInvoiceNumber: taxInvoiceNumber,
};
vatReturnBreakdown(params).then((rs: VatReturnBreakdownResponse) => {
setBreakdown(rs.breakdown);
});
};
const onClickToOpenBottomSheet = () => {
setBottomSheetOn(true);
};
useEffect(() => {
callTaxInvoice();
callVatReturnBreakdown();
}, []);
return (
<>
<main className="full-height">
<div className="tab-content pb-86">
<div className="tab-pane sub active">
<div className="option-list">
<div className="txn-detail">
<AmountSection
detail={ detail }
></AmountSection>
<div className="txn-divider minus"></div>
<IssueSection
detail={ detail }
></IssueSection>
<div className="txn-divider minus"></div>
<ReceiverSection
detail={ detail }
></ReceiverSection>
<div className="txn-divider"></div>
<SupplierSection
detail={ detail }
></SupplierSection>
</div>
</div>
<div className="apply-row">
<button
className="btn-50 btn-blue flex-1"
onClick={ onClickToOpenBottomSheet }
>{t('vatReturn.viewDetails')}</button>
</div>
</div>
</div>
</main>
{ !!bottomSheetOn &&
<VatReturnListDetailBottomSheet
bottomSheetOn={ bottomSheetOn }
setBottomSheetOn={ setBottomSheetOn }
breakdown={ breakdown }
transactionAmount={ detail?.transactionAmount }
supplyAmount={ detail?.supplyAmount }
vatAmount={ detail?.vatAmount }
totalAmount={ detail?.totalAmount }
></VatReturnListDetailBottomSheet>
}
</>
)
};