diff --git a/src/entities/additional-service/ui/fund-account/detail/result-detail.tsx b/src/entities/additional-service/ui/fund-account/detail/result-detail.tsx index ea9d945..e3d6904 100644 --- a/src/entities/additional-service/ui/fund-account/detail/result-detail.tsx +++ b/src/entities/additional-service/ui/fund-account/detail/result-detail.tsx @@ -15,7 +15,7 @@ import { DetailMotionDuration, DetailMotionStyle, DetailMotionVariants } from '@ import { FullMenuClose } from '@/entities/common/ui/full-menu-close'; import { showAlert } from '@/widgets/show-alert'; import { snackBar } from '@/shared/lib'; -import { TaxInvoiceSample } from '@/entities/common/ui/tax-invoice-sample'; +import { DepositReceiptSample } from '@/entities/common/ui/deposit-receipt-sample'; export interface FundAccountResultDetailProps { detailOn: boolean; @@ -34,7 +34,7 @@ export const FundAccountResultDetail = ({ const [detail, setDetail] = useState(); const [downloadBottomSheetOn, setDownloadBottomSheetOn] = useState(false); - const [taxInvoiceOn, setTaxInvoiceOn] = useState(false); + const [depositReceiptSampleOn, setDepositReceiptSampleOn] = useState(false); const { mutateAsync: extensionFundAccountResultDetail } = useExtensionFundAccountResultDetailMutation(); const { mutateAsync: extensionFundAccountDownlaodReceipt } = useExtensionFundAccountDownloadReceiptMutation(); @@ -91,7 +91,7 @@ export const FundAccountResultDetail = ({ }; extensionFundAccountDownlaodReceipt(params).then((rs: ExtensionFundAccountDownloadReceiptResponse) => { if (selectedMode === DownloadSelectedMode.IMAGE) { - setTaxInvoiceOn(true) + setDepositReceiptSampleOn(true) } else if (selectedMode === DownloadSelectedMode.EMAIL) { snackBar('입금확인서 다운 성공') } @@ -213,10 +213,10 @@ export const FundAccountResultDetail = ({ } { - + } ); diff --git a/src/entities/additional-service/ui/info-wrap/title-info-wrap.tsx b/src/entities/additional-service/ui/info-wrap/title-info-wrap.tsx index ee8c4bb..a7cde1a 100644 --- a/src/entities/additional-service/ui/info-wrap/title-info-wrap.tsx +++ b/src/entities/additional-service/ui/info-wrap/title-info-wrap.tsx @@ -1,5 +1,4 @@ import moment from 'moment'; -import { NumericFormat } from 'react-number-format'; import { useTranslation } from 'react-i18next'; import { AdditionalServiceCategory, DetailInfoSectionKeys } from '../../model/types'; import { DetailInfoSectionProps } from '../../model/types'; diff --git a/src/entities/additional-service/ui/payout/detail/payout-detail.tsx b/src/entities/additional-service/ui/payout/detail/payout-detail.tsx index 34532e5..ee6b3c2 100644 --- a/src/entities/additional-service/ui/payout/detail/payout-detail.tsx +++ b/src/entities/additional-service/ui/payout/detail/payout-detail.tsx @@ -11,7 +11,7 @@ import { DownloadBottomSheet, DownloadSelectedMode } from '@/entities/common/ui/ import { showAlert } from '@/widgets/show-alert'; import { checkGrant } from '@/shared/lib/check-grant'; import { snackBar } from '@/shared/lib'; -import { TaxInvoiceSample } from '@/entities/common/ui/tax-invoice-sample'; +import { DepositReceiptSample } from '@/entities/common/ui/deposit-receipt-sample'; export interface PayoutDetailProps { detailOn: boolean; @@ -31,7 +31,7 @@ export const PayoutDetail = ({ const [detail, setDetail] = useState(); const [downloadBottomSheetOn, setDownloadBottomSheetOn] = useState(false); - const [taxInvoiceOn, setTaxInvoiceOn] = useState(false); + const [depositReceiptSampleOn, setDepositReceiptSampleOn] = useState(false); const { mutateAsync: extensionPayoutDetail } = useExtensionPayoutDetailMutation(); const { mutateAsync: extensionPayoutDetailDownloadCertification } = useExtensionPayoutDetailDownloadCertificateMutation(); @@ -72,9 +72,9 @@ export const PayoutDetail = ({ }; extensionPayoutDetailDownloadCertification(params).then((rs: ExtensionPayoutDetailDownloadCertificateResponse) => { console.log('Certificate Download Status:', rs); - if(selectedMode === DownloadSelectedMode.IMAGE) { - setTaxInvoiceOn(true) - } else if(selectedMode === DownloadSelectedMode.EMAIL) { + if (selectedMode === DownloadSelectedMode.IMAGE) { + setDepositReceiptSampleOn(true) + } else if (selectedMode === DownloadSelectedMode.EMAIL) { snackBar('입금확인서 다운 성공') } }).catch((error) => { @@ -205,10 +205,10 @@ export const PayoutDetail = ({ } { - + } ); diff --git a/src/entities/common/ui/cash-receipt-sample.tsx b/src/entities/common/ui/cash-receipt-sample.tsx new file mode 100644 index 0000000..74280b7 --- /dev/null +++ b/src/entities/common/ui/cash-receipt-sample.tsx @@ -0,0 +1,241 @@ +import { IMAGE_ROOT } from '@/shared/constants/common'; +import { motion } from 'framer-motion'; +import { FilterMotionDuration, FilterMotionVariants } from '../model/constant'; +import { snackBar } from '@/shared/lib'; +import { toPng } from 'html-to-image'; +import { useTranslation } from 'react-i18next'; +import '@/shared/ui/assets/css/style-tax-invoice.css'; +import { useEffect } from 'react'; +import { NumericFormat } from 'react-number-format'; +import { AmountInfo, CustomerInfo, IssueInfo, MerchantInfo, ProductInfo, TransactionInfo } from '@/entities/transaction/model/types'; +import moment from 'moment'; + +export interface CashReceiptSampleProps { + cashReceiptSampleOn: boolean; + setCashReceiptSampleOn: (cashReceiptSampleOn: boolean) => void; + merchantInfo?: MerchantInfo; + issueInfo?: IssueInfo; + amountInfo?: AmountInfo; + transactionInfo?: TransactionInfo; + customerInfo?: CustomerInfo; + productInfo?: ProductInfo; +}; + +export const CashReceiptSample = ({ + cashReceiptSampleOn, + setCashReceiptSampleOn, + merchantInfo, + issueInfo, + amountInfo, + transactionInfo, + customerInfo, + productInfo +}: CashReceiptSampleProps) => { + const { t } = useTranslation(); + + const downloadImage = () => { + const section = document.getElementById('image-section') as HTMLElement; + toPng(section).then((image) => { + const link = document.createElement('a'); + link.download = 'downloadImage.png'; + link.href = image; + link.click(); + snackBar(t('common.imageRequested'), function(){ + onClickToClose(); + }); + }); + }; + const onClickToClose = () => { + setCashReceiptSampleOn(false); + }; + + const getDateTime = () => { + let date = ''; + let time = ''; + if(!!issueInfo?.issueDate){ + date = moment(issueInfo?.issueDate).format('YYYY.MM.DD'); + } + if(!!issueInfo?.issueDate && !!issueInfo?.issueTime){ + time = moment(issueInfo?.issueDate+' '+issueInfo?.issueTime).format('HH:mm:ss'); + } + if(!!date && !!time){ + return date + ' | ' + time; + } + else{ + return ''; + } + }; + + useEffect(() => { + if(!!cashReceiptSampleOn){ + setTimeout(() => { + downloadImage(); + }, 500); + } + }, [cashReceiptSampleOn]); + + + return ( + <> + +
+
+
+
+
+ + + + + +
+
상점정보
+
+
+
상호
+
{ merchantInfo?.merchantName }
+
+
+
대표자
+
{ merchantInfo?.representativeName }
+
+
+
사업자등록번호
+
{ merchantInfo?.businessNumber }
+
+
+
전화번호
+
{ merchantInfo?.phoneNumber }
+
+
+
주소
+
{ merchantInfo?.address }
+
+
+
URL
+
+
+
+
+
+
+
+ + + + + + + +
+
결제정보
+
+
+
총 결제금액
+
+ +
+
+
+
과세금액
+
+ +
+
+
+
부가세
+
+ +
+
+
+
면세금액
+
+ +
+
+
+
봉사료
+
+ +
+
+
+
+
결제수단
+
{ transactionInfo?.paymentMethod }
+
+
+
현금영수증번호
+
{ issueInfo?.issueNumber }
+
+
+
주문자
+
{ customerInfo?.customerName }
+
+
+
상품명
+
{ productInfo?.productName }
+
+
+
승인번호
+
{ issueInfo?.approvalNumber }
+
+
+
거래일시
+
{ getDateTime() }
+
+
+
용도
+
{ issueInfo?.purpose }
+
+
+
+ * 본 영수증은 조세특례제한법 제 126조의 3및 동법 시행령 제 121조의 3규정에 의거, 연말정산시 소득공제 혜택 부여의 목적으로 발행됩니다.
+ * 현금 거래 완료 건에 대한 국세청의 검증 소요기간은 2일이며 결제하신 다음날 검증이 완료된 현금영수증을 발급받을 수 있습니다.
+ * 현금영수증 문의 126-1-1 +
+
+
+
+ + ); +}; \ No newline at end of file diff --git a/src/entities/common/ui/deposit-receipt-sample.tsx b/src/entities/common/ui/deposit-receipt-sample.tsx new file mode 100644 index 0000000..83ab0d7 --- /dev/null +++ b/src/entities/common/ui/deposit-receipt-sample.tsx @@ -0,0 +1,115 @@ +import { IMAGE_ROOT } from '@/shared/constants/common'; +import { motion } from 'framer-motion'; +import { FilterMotionDuration, FilterMotionVariants } from '../model/constant'; +import { snackBar } from '@/shared/lib'; +import { toPng } from 'html-to-image'; +import { useTranslation } from 'react-i18next'; +import '@/shared/ui/assets/css/style-tax-invoice.css'; +import { useEffect } from 'react'; +import { NumericFormat } from 'react-number-format'; +import { DepositInfo } from '@/entities/transaction/model/types'; + +export interface DepositReceiptSampleProps { + depositReceiptSampleOn: boolean; + setDepositReceiptSampleOn: (DepositReceiptSampleOn: boolean) => void; + depositInfo?: DepositInfo +}; + +export const DepositReceiptSample = ({ + depositReceiptSampleOn, + setDepositReceiptSampleOn, + depositInfo +}: DepositReceiptSampleProps) => { + const { t } = useTranslation(); + + const downloadImage = () => { + const section = document.getElementById('image-section') as HTMLElement + toPng(section).then((image) => { + const link = document.createElement('a'); + link.download = 'downloadImage.png'; + link.href = image; + link.click(); + snackBar(t('common.imageRequested'), function () { + onClickToClose(); + }); + }); + } + const onClickToClose = () => { + setDepositReceiptSampleOn(false); + }; + + useEffect(() => { + if (!!depositReceiptSampleOn) { + downloadImage(); + } + }, [depositReceiptSampleOn]); + + + return ( + <> + +
+
+
+
+
+ + + + + + + +
+
입금정보
+
+
+
입금일시
+
{depositInfo?.depositDate}
+
+
+
입금은행
+
{depositInfo?.depositBank}
+
+
+
입금계좌
+
{depositInfo?.depositAccount}
+
+
+
금액
+
+ + +
+
+
+
입금적요
+
{depositInfo?.depositReason}
+
+
+
입금ID
+
{depositInfo?.depositId}
+
+
+
+
+
+ + ) +} \ No newline at end of file diff --git a/src/entities/common/ui/tax-invoice-sample.tsx b/src/entities/common/ui/tax-invoice-sample.tsx index b97a37a..5284753 100644 --- a/src/entities/common/ui/tax-invoice-sample.tsx +++ b/src/entities/common/ui/tax-invoice-sample.tsx @@ -6,16 +6,31 @@ import { toPng } from 'html-to-image'; import { useTranslation } from 'react-i18next'; import '@/shared/ui/assets/css/style-tax-invoice.css'; import { useEffect } from 'react'; +import { NumericFormat } from 'react-number-format'; +import { AmountInfo, CustomerInfo, IssueInfo, MerchantInfo, ProductInfo, TransactionInfo } from '@/entities/transaction/model/types'; +import moment from 'moment'; -export interface TaxInoviceSampleProps { - taxInvoiceOn: boolean; - setTaxInvoiceOn: (taxInvoiceOn: boolean) => void; +export interface TaxInvoiceSampleProps { + taxInvoiceSampleOn: boolean; + setTaxInvoiceSampleOn: (taxInvoiceSampleOn: boolean) => void; + merchantInfo?: MerchantInfo; + issueInfo?: IssueInfo; + amountInfo?: AmountInfo; + transactionInfo?: TransactionInfo; + customerInfo?: CustomerInfo; + productInfo?: ProductInfo; }; export const TaxInvoiceSample = ({ - taxInvoiceOn, - setTaxInvoiceOn -}: TaxInoviceSampleProps) => { + taxInvoiceSampleOn, + setTaxInvoiceSampleOn, + merchantInfo, + issueInfo, + amountInfo, + transactionInfo, + customerInfo, + productInfo +}: TaxInvoiceSampleProps) => { const { t } = useTranslation(); const downloadImage = () => { @@ -31,14 +46,33 @@ export const TaxInvoiceSample = ({ }); }; const onClickToClose = () => { - setTaxInvoiceOn(false); + setTaxInvoiceSampleOn(false); + }; + + const getDateTime = () => { + let date = ''; + let time = ''; + if(!!issueInfo?.issueDate){ + date = moment(issueInfo?.issueDate).format('YYYY.MM.DD'); + } + if(!!issueInfo?.issueDate && !!issueInfo?.issueTime){ + time = moment(issueInfo?.issueDate+' '+issueInfo?.issueTime).format('HH:mm:ss'); + } + + if(!!date && !!time){ + return date + ' | ' + time; + } + else{ + return ''; + } }; useEffect(() => { - if(!!taxInvoiceOn){ + if(!!taxInvoiceSampleOn){ + setTimeout downloadImage(); } - }, [taxInvoiceOn]); + }, [taxInvoiceSampleOn]); return ( @@ -46,52 +80,12 @@ export const TaxInvoiceSample = ({ -
-
-
- NICEPAY - 닫기 -
-
-
이메일 발송
- - 발송 - 인쇄 -
-
-
-
신용카드 매출전표
- -
-
- -
+
+
@@ -111,27 +105,27 @@ export const TaxInvoiceSample = ({
상호
-
아이스 페이먼츠 주식회사
+
{ merchantInfo?.merchantName }
대표자
-
김광철
+
{ merchantInfo?.representativeName }
사업자등록번호
-
815-81-00527
+
{ merchantInfo?.businessNumber }
전화번호
-
1661-7335
+
{ merchantInfo?.phoneNumber }
주소
-
서울 마포구 아현동 크레디트센터빌딩 217 11
+
{ merchantInfo?.address }
URL
-
home.nicepay.co.kr
+
@@ -157,102 +151,90 @@ export const TaxInvoiceSample = ({
총 결제금액
-
4,552,000원
+
+ +
-
금액
-
343,940원
+
과세금액
+
+ +
부가세
-
343,940원
+
+ +
+
+
+
면세금액
+
+ +
+
+
+
봉사료
+
+ +
-
카드종류
-
신한
+
결제수단
+
{ transactionInfo?.paymentMethod }
-
카드번호
-
489023******0070
+
현금영수증번호
+
{ issueInfo?.issueNumber }
-
구매자
-
홍*동
+
주문자
+
{ customerInfo?.customerName }
상품명
-
곰인형
-
-
-
거래유형
-
전취소
-
-
-
일반/할부
-
일시불
+
{ productInfo?.productName }
승인번호
-
14219606
+
{ issueInfo?.approvalNumber }
거래일시
-
2025.09.22 | 11:32:29
+
{ getDateTime() }
-
취소일시
-
2025.09.22 | 23:10:16
+
용도
+
{ issueInfo?.purpose }
- -
- -
-
-
- - - - - - - - - - -
-
결제대행사 정보
-
-
-
상호
-
나이스페이먼츠 주식회사
-
-
-
대표자명
-
김광철
-
-
-
사업자등록번호
-
815-81-00527
-
-
-
전화번호
-
1661-0808
-
-
-
주소
-
서울특별시 영등포구 문래로28길 25 (문래동3가)
-
+
+ * 본 영수증은 조세특례제한법 제 126조의 3및 동법 시행령 제 121조의 3규정에 의거, 연말정산시 소득공제 혜택 부여의 목적으로 발행됩니다.
+ * 현금 거래 완료 건에 대한 국세청의 검증 소요기간은 2일이며 결제하신 다음날 검증이 완료된 현금영수증을 발급받을 수 있습니다.
+ * 현금영수증 문의 126-1-1
-
신용카드 청구서에는 NICE로 표기됩니다.
* 부가세법 제 46조에 따라 신용카드 매출전표를 이용하여 매입세액 공제가 가능합니다.
(동법 제 33조 2항에 근거하여 신용카드 매출전표를 발행한 경우에는 세금계산서를 발급하지 아니합니다.)
diff --git a/src/entities/transaction/api/use-cash-receipt-excel-download-mutation.ts b/src/entities/transaction/api/use-cash-receipt-excel-download-mutation.ts new file mode 100644 index 0000000..5dae046 --- /dev/null +++ b/src/entities/transaction/api/use-cash-receipt-excel-download-mutation.ts @@ -0,0 +1,39 @@ +import axios from 'axios'; +import { API_URL_TRANSACTION } from '@/shared/api/api-url-transaction'; +import { resultify } from '@/shared/lib/resultify'; +import { NiceAxiosError } from '@/shared/@types/error'; +import { + CashReceiptExcelDownloadParams, + CashReceiptExcelDownloadResponse +} from '../model/types'; +import { + useMutation, + UseMutationOptions +} from '@tanstack/react-query'; +import { getHeaderUserAgent } from '@/shared/constants/url'; + +export const cashReceiptExcelDownload = (params: CashReceiptExcelDownloadParams) => { + let headerOptions = { + menuId: 32, + apiType: 'DOWNLOAD' + }; + let options = { + headers: { + 'X-User-Agent': getHeaderUserAgent(headerOptions) + } + }; + return resultify( + axios.post(API_URL_TRANSACTION.cashReceiptReceiptDownload(), params, options), + ); +}; + +export const useCashReceiptExcelDownloadMutation = (options?: UseMutationOptions) => { + const mutation = useMutation({ + ...options, + mutationFn: (params: CashReceiptExcelDownloadParams) => cashReceiptExcelDownload(params), + }); + + return { + ...mutation, + }; +}; diff --git a/src/entities/transaction/api/use-escrow-download-excel-mutation.ts b/src/entities/transaction/api/use-escrow-download-excel-mutation.ts new file mode 100644 index 0000000..0846c0a --- /dev/null +++ b/src/entities/transaction/api/use-escrow-download-excel-mutation.ts @@ -0,0 +1,39 @@ +import axios from 'axios'; +import { API_URL_TRANSACTION } from '@/shared/api/api-url-transaction'; +import { resultify } from '@/shared/lib/resultify'; +import { NiceAxiosError } from '@/shared/@types/error'; +import { + EscrowDownloadExcelParams, + EscrowDownloadExcelResponse +} from '../model/types'; +import { + useMutation, + UseMutationOptions +} from '@tanstack/react-query'; +import { getHeaderUserAgent } from '@/shared/constants/url'; + +export const escrowDownloadExcelList = (params: EscrowDownloadExcelParams) => { + let headerOptions = { + menuId: 33, + apiType: 'DOWNLOAD' + }; + let options = { + headers: { + 'X-User-Agent': getHeaderUserAgent(headerOptions) + } + }; + return resultify( + axios.post(API_URL_TRANSACTION.escrowList(), params, options), + ); +}; + +export const useEscrowListMutation = (options?: UseMutationOptions) => { + const mutation = useMutation({ + ...options, + mutationFn: (params: EscrowDownloadExcelParams) => escrowDownloadExcelList(params), + }); + + return { + ...mutation, + }; +}; diff --git a/src/entities/transaction/model/types.ts b/src/entities/transaction/model/types.ts index 18bfcd3..a9b896b 100644 --- a/src/entities/transaction/model/types.ts +++ b/src/entities/transaction/model/types.ts @@ -292,6 +292,22 @@ export interface CashReceiptReceiptDownloadResponse { customerInfo: CustomerInfo; productInfo: ProductInfo; }; + +export enum CashReceiptDateType { + ISSUE_DATE = 'ISSUE_DATE', + CANCEL_DATE = 'CANCEL_DATE' +}; +export interface CashReceiptExcelDownloadParams { + email: string; + mid: string; + startDate: string; + endDate: string; + dateType: CashReceiptDateType; + purposeType: CashReceiptPurposeType; + transactionType: CashReceiptTransactionType; + processResult: CashReceiptProcessResult; +}; +export interface CashReceiptExcelDownloadResponse {}; export interface EscrowListParams { mid?: string; searchType?: string; @@ -305,6 +321,16 @@ export interface EscrowListParams { page?: DefaultRequestPagination; }; +export interface EscrowDownloadExcelParams { + email: string; + mid: string; + startDate: string; + endDate: string; + deliveryStatus: EscrowDeliveryStatus; + settlementStatus: EscrowSettlementStatus; +}; +export interface EscrowDownloadExcelResponse {}; + export interface BillingListParams { mid?: string; searchType?: string; @@ -347,7 +373,7 @@ export interface AmountInfo { multiCouponAmount?: number; receiptAmount?: number; cupDepositAmount?: number; - + customerName?: string; amount?: number; supplyAmount?: number; @@ -375,6 +401,7 @@ export interface AmountInfo { simplePaymentServiceCode?: string; buyerName?: string; + vatAmount?: number; }; export interface ImportantInfo { moid?: string; @@ -467,6 +494,9 @@ export interface TransactionInfo { cashReceiptIssue?: string; transactionDateTime?: string; transactionAmount?: number; + tid?: string; + merchantTid?: string; + paymentMethod?: string; }; export interface SettlementInfo { approvalSettlementDate?: string; @@ -548,6 +578,22 @@ export interface MerchantInfo { companyName?: string; gid?: string; aid?: string; + merchantName?: string; + businessNumber?: string; + representativeName?: string; + address?: string; + phoneNumber?: string; + subMallName?: string; + subMallBusinessNumber?: string; +}; + +export interface DepositInfo { + depositDate?: string; + depositBank?: string; + depositAccount?: string; + amount?: number; + depositReason?: string; + depositId?: string; } export interface DetailResponse { diff --git a/src/entities/transaction/ui/section/amount-info-section.tsx b/src/entities/transaction/ui/section/amount-info-section.tsx index 8fb0789..d86f6de 100644 --- a/src/entities/transaction/ui/section/amount-info-section.tsx +++ b/src/entities/transaction/ui/section/amount-info-section.tsx @@ -1,14 +1,14 @@ import moment from 'moment'; import { useTranslation } from 'react-i18next'; import { SectionTitleArrow } from '@/entities/common/ui/section-title-arrow'; -import { CashReceiptReceiptDownloadParams, CashReceiptReceiptDownloadResponse, InfoSectionKeys, InfoSectionProps, TransactionCategory } from '../../model/types'; +import { AmountInfo, CashReceiptReceiptDownloadParams, CashReceiptReceiptDownloadResponse, CustomerInfo, InfoSectionKeys, InfoSectionProps, IssueInfo, MerchantInfo, ProductInfo, TransactionCategory, TransactionInfo } from '../../model/types'; import { SlideDown } from 'react-slidedown'; import 'react-slidedown/lib/slidedown.css'; import { snackBar } from '@/shared/lib'; import { useCashReceiptReceiptDownloadMutation } from '../../api/use-cash-receipt-receipt-download-mutation'; import { useState } from 'react'; import { DownloadBottomSheet, DownloadSelectedMode } from '@/entities/common/ui/download-bottom-sheet'; -import { TaxInvoiceSample } from '@/entities/common/ui/tax-invoice-sample'; +import { CashReceiptSample } from '@/entities/common/ui/cash-receipt-sample'; export const AmountInfoSection = ({ transactionCategory, @@ -23,7 +23,14 @@ export const AmountInfoSection = ({ const { mutateAsync: cashReceiptReceiptDownload } = useCashReceiptReceiptDownloadMutation(); const [downloadBottomSheetOn, setDownloadBottomSheetOn] = useState(false); - const [taxInvoiceOn, setTaxInvoiceOn] = useState(false); + const [cashReceiptSampleOn, setCashReceiptSampleOn] = useState(false); + + const [receiptIssueInfo, setReceiptIssueInfo] = useState({}); + const [receiptMerchantInfo, setReceiptMerchantInfo] = useState({}); + const [receiptTransactionInfo, setReceiptTransactionInfo] = useState({}); + const [receiptAmountInfo, setReceiptAmountInfo] = useState({}); + const [receiptCustomerInfo, setReceiptCustomerInfo] = useState(); + const [receiptProductInfo, setReceiptProductInfo] = useState(); let newAmountInfo: Record | undefined = amountInfo; const subItems: Record> = { @@ -196,15 +203,24 @@ export const AmountInfoSection = ({ selectedMode: DownloadSelectedMode, userEmail?: string ) => { - console.log(selectedMode, userEmail, tid) if(!!tid){ let params: CashReceiptReceiptDownloadParams = { tid: tid }; cashReceiptReceiptDownload(params).then((rs: CashReceiptReceiptDownloadResponse) => { - console.log(rs); + /* + if(rs?.merchantInfo){ + rs.merchantInfo.merchantName = '나이스페이먼츠'; + } + */ + setReceiptIssueInfo(rs?.issueInfo); + setReceiptMerchantInfo(rs?.merchantInfo); + setReceiptTransactionInfo(rs?.transactionInfo); + setReceiptAmountInfo(rs?.amountInfo); + setReceiptCustomerInfo(rs?.customerInfo); + setReceiptProductInfo(rs?.productInfo); if(selectedMode === DownloadSelectedMode.IMAGE){ - setTaxInvoiceOn(true); + setCashReceiptSampleOn(true); } else if(selectedMode === DownloadSelectedMode.EMAIL){ snackBar('거래확인서 다운 성공'); @@ -412,7 +428,7 @@ export const AmountInfoSection = ({ }
{ (transactionCategory === TransactionCategory.CashReceipt) && - // !!canDownloadReceipt && + !!canDownloadReceipt &&