정산 상세 수정

This commit is contained in:
focp212@naver.com
2025-10-23 18:43:50 +09:00
parent 40da87c5ad
commit c2041f918f
3 changed files with 145 additions and 27 deletions

View File

@@ -79,14 +79,20 @@ export interface SettlementsTransactionDetailResponse {
transactionInfo: TransactionInfo; transactionInfo: TransactionInfo;
}; };
export interface AmountInfo { export interface AmountInfo {
transactionAmount: number; totalTransactionAmount?: number;
paymentFee: number; totalTransactionCount?: number;
escrowFee: number; creditCardAmount?: number;
authFee: number; creditCardCount?: number;
vatFee: number; accountTransferAmount?: number;
settlementAmount: number; accountTransferCount?: number;
preSettlementCancelOffset: number; totalPgFee?: number;
finalSettlementAmount: number; paymentFee?: number;
escrowFee?: number;
authFee?: number;
vatFee?: number;
holdAmount?: number;
releaseAmount?: number;
offsetAmount?: number;
}; };
export interface TransactionInfo { export interface TransactionInfo {
orderNumber: string; orderNumber: string;

View File

@@ -18,51 +18,153 @@ export const AmountInfoWrap = ({
<ul className="kv-list"> <ul className="kv-list">
<li className="kv-row"> <li className="kv-row">
<span className="k"> </span> <span className="k"> </span>
<span className="v">6,017,600 (269)</span> <span className="v">
<span>
<NumericFormat
value={ amountInfo?.totalTransactionAmount }
thousandSeparator
displayType="text"
suffix='원'
></NumericFormat>
</span>
<span>
<NumericFormat
value={ amountInfo?.totalTransactionCount }
thousandSeparator
displayType="text"
prefix=' ('
suffix='건)'
></NumericFormat>
</span>
</span>
<ul className="txn-amount-detail"> <ul className="txn-amount-detail">
<li> <li>
<span>·&nbsp;&nbsp;</span> <span>·&nbsp;&nbsp;</span>
<span>6,017,000 (260)</span> <span>
<span>
<NumericFormat
value={ amountInfo?.creditCardAmount }
thousandSeparator
displayType="text"
suffix='원'
></NumericFormat>
</span>
<span>
<NumericFormat
value={ amountInfo?.creditCardCount }
thousandSeparator
displayType="text"
prefix=' ('
suffix='건)'
></NumericFormat>
</span>
</span>
</li> </li>
<li> <li>
<span>·&nbsp;&nbsp;</span> <span>·&nbsp;&nbsp;</span>
<span>600 (9)</span> <span>
<span>
<NumericFormat
value={ amountInfo?.accountTransferAmount }
thousandSeparator
displayType="text"
suffix='원'
></NumericFormat>
</span>
<span>
<NumericFormat
value={ amountInfo?.accountTransferCount }
thousandSeparator
displayType="text"
prefix=' ('
suffix='건)'
></NumericFormat>
</span>
</span>
</li> </li>
</ul> </ul>
</li> </li>
<li className="kv-row"> <li className="kv-row">
<span className="k">PG </span> <span className="k">PG </span>
<span className="v">205,255</span> <span className="v">
<NumericFormat
value={ amountInfo?.totalPgFee }
thousandSeparator
displayType="text"
></NumericFormat>
</span>
<ul className="txn-amount-detail"> <ul className="txn-amount-detail">
<li> <li>
<span>·&nbsp;&nbsp;</span> <span>·&nbsp;&nbsp;</span>
<span>165,384</span> <span>
<NumericFormat
value={ amountInfo?.paymentFee }
thousandSeparator
displayType="text"
></NumericFormat>
</span>
</li> </li>
<li> <li>
<span>·&nbsp;&nbsp; </span> <span>·&nbsp;&nbsp; </span>
<span>0</span> <span>
<NumericFormat
value={ amountInfo?.escrowFee }
thousandSeparator
displayType="text"
></NumericFormat>
</span>
</li> </li>
<li> <li>
<span>·&nbsp;&nbsp; </span> <span>·&nbsp;&nbsp; </span>
<span>21,300</span> <span>
<NumericFormat
value={ amountInfo?.authFee }
thousandSeparator
displayType="text"
></NumericFormat>
</span>
</li> </li>
<li> <li>
<span>·&nbsp;&nbsp;VAT</span> <span>·&nbsp;&nbsp;VAT</span>
<span>18,571</span> <span>
<NumericFormat
value={ amountInfo?.vatFee }
thousandSeparator
displayType="text"
></NumericFormat>
</span>
</li> </li>
</ul> </ul>
</li> </li>
<li className="kv-row"> <li className="kv-row">
<span className="k"></span> <span className="k"></span>
<span className="v">0</span> <span className="v">
<NumericFormat
value={ amountInfo?.holdAmount }
thousandSeparator
displayType="text"
></NumericFormat>
</span>
</li> </li>
<li className="kv-row"> <li className="kv-row">
<span className="k"></span> <span className="k"></span>
<span className="v">0</span> <span className="v">
<NumericFormat
value={ amountInfo?.releaseAmount }
thousandSeparator
displayType="text"
></NumericFormat>
</span>
</li> </li>
<li className="kv-row"> <li className="kv-row">
<span className="k"></span> <span className="k"></span>
<span className="v">- 80,603</span> <span className="v">
<NumericFormat
value={ amountInfo?.offsetAmount }
thousandSeparator
displayType="text"
></NumericFormat>
</span>
</li> </li>
<li className="kv-row bolder"> <li className="kv-row bolder">
<span className="k"></span> <span className="k"></span>
@@ -76,7 +178,7 @@ export const AmountInfoWrap = ({
<span className="k"></span> <span className="k"></span>
<span className="v"> <span className="v">
<NumericFormat <NumericFormat
value={ amountInfo?.transactionAmount } value={ amountInfo?.totalTransactionAmount }
thousandSeparator thousandSeparator
displayType="text" displayType="text"
suffix='원' suffix='원'
@@ -84,7 +186,7 @@ export const AmountInfoWrap = ({
</span> </span>
</li> </li>
<li className="kv-row"> <li className="kv-row">
<span className="k"> </span> <span className="k"> </span>
<span className="v"> <span className="v">
<NumericFormat <NumericFormat
value={ amountInfo?.paymentFee } value={ amountInfo?.paymentFee }
@@ -131,7 +233,7 @@ export const AmountInfoWrap = ({
<span className="k"></span> <span className="k"></span>
<span className="v"> <span className="v">
<NumericFormat <NumericFormat
value={ amountInfo?.settlementAmount } value={ amountInfo?.offsetAmount }
thousandSeparator thousandSeparator
displayType="text" displayType="text"
suffix='원' suffix='원'
@@ -142,7 +244,7 @@ export const AmountInfoWrap = ({
<span className="k"> </span> <span className="k"> </span>
<span className="v"> <span className="v">
<NumericFormat <NumericFormat
value={ amountInfo?.preSettlementCancelOffset } value={ amountInfo?.offsetAmount }
thousandSeparator thousandSeparator
displayType="text" displayType="text"
suffix='원' suffix='원'
@@ -153,7 +255,7 @@ export const AmountInfoWrap = ({
<span className="k"></span> <span className="k"></span>
<span className="v"> <span className="v">
<NumericFormat <NumericFormat
value={ amountInfo?.finalSettlementAmount } value={ amountInfo?.offsetAmount }
thousandSeparator thousandSeparator
displayType="text" displayType="text"
suffix='원' suffix='원'

View File

@@ -13,7 +13,8 @@ import {
IssueInfo, IssueInfo,
DetailInfo, DetailInfo,
InfoSectionKeys, InfoSectionKeys,
CashReceiptPurposeType CashReceiptPurposeType,
AmountInfo
} from '@/entities/transaction/model/types'; } from '@/entities/transaction/model/types';
import { import {
useSetOnBack, useSetOnBack,
@@ -23,11 +24,13 @@ import {
} from '@/widgets/sub-layout/use-sub-layout'; } from '@/widgets/sub-layout/use-sub-layout';
import { CashReceitPurposeUpdateBottomSheet } from '@/entities/transaction/ui/cash-receit-purpose-update-bottom-sheet'; import { CashReceitPurposeUpdateBottomSheet } from '@/entities/transaction/ui/cash-receit-purpose-update-bottom-sheet';
import { useCashReceiptPurposeUpdateMutation } from '@/entities/transaction/api/use-cash-receipt-purpose-update-mutation'; import { useCashReceiptPurposeUpdateMutation } from '@/entities/transaction/api/use-cash-receipt-purpose-update-mutation';
import { AmountInfoSection } from '@/entities/transaction/ui/section/amount-info-section';
export const CashReceiptDetailPage = () => { export const CashReceiptDetailPage = () => {
const { navigate } = useNavigate(); const { navigate } = useNavigate();
const location = useLocation(); const location = useLocation();
const [amountInfo, setAmountInfo] = useState<AmountInfo>();
const [issueInfo, setIssueInfo] = useState<IssueInfo>(); const [issueInfo, setIssueInfo] = useState<IssueInfo>();
const [detailInfo, setDetailInfo] = useState<DetailInfo>(); const [detailInfo, setDetailInfo] = useState<DetailInfo>();
const [showDetailInfo, setShowDetailInfo] = useState<boolean>(false); const [showDetailInfo, setShowDetailInfo] = useState<boolean>(false);
@@ -65,8 +68,9 @@ export const CashReceiptDetailPage = () => {
approvalNumber: approvalNumber approvalNumber: approvalNumber
}; };
cashReceiptDetail(cashReceitDetailParams).then((rs: DetailResponse) => { cashReceiptDetail(cashReceitDetailParams).then((rs: DetailResponse) => {
setIssueInfo(rs.issueInfo); setAmountInfo(rs.amountInfo || {});
setDetailInfo(rs.detailInfo); setIssueInfo(rs.issueInfo || {});
setDetailInfo(rs.detailInfo || {});
if(rs.issueInfo){ if(rs.issueInfo){
setPurposeType(rs.issueInfo.purpose); setPurposeType(rs.issueInfo.purpose);
} }
@@ -93,6 +97,12 @@ export const CashReceiptDetailPage = () => {
<div className="tab-pane sub active"> <div className="tab-pane sub active">
<div className="option-list"> <div className="option-list">
<div className={ `txn-detail ${(detailInfo?.canDownloadReceipt)? 'pb-86': ''}` }> <div className={ `txn-detail ${(detailInfo?.canDownloadReceipt)? 'pb-86': ''}` }>
<AmountInfoSection
transactionCategory={ TransactionCategory.CashReceipt }
amountInfo={ amountInfo }
purposeType={ purposeType }
></AmountInfoSection>
<div className="txn-divider"></div>
<IssueInfoSection <IssueInfoSection
transactionCategory={ TransactionCategory.CashReceipt } transactionCategory={ TransactionCategory.CashReceipt }
issueInfo={ issueInfo } issueInfo={ issueInfo }