From bc1540ca04188d15d597fa385afee9413bc85617 Mon Sep 17 00:00:00 2001 From: Jay Sheen Date: Thu, 30 Oct 2025 09:25:50 +0900 Subject: [PATCH 1/4] =?UTF-8?q?=EB=B6=80=EA=B0=80=EC=84=B8=20=EC=8B=A0?= =?UTF-8?q?=EA=B3=A0=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EB=B0=8F=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EB=8B=A4=EA=B5=AD=EC=96=B4?= =?UTF-8?q?=ED=99=94=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 부가세 신고 페이지 다국어화 (3개 페이지) * 조회 페이지: 헤더 타이틀, 탭, 검색/다운로드 * 상세 페이지: 세금계산서 상세 정보 * 참조번호 발급 페이지: 신청 완료/실패 메시지 - 부가세 엔티티 컴포넌트 다국어화 (11개 컴포넌트) * vat-return-tab: 세금계산서/부가세참고 탭 * list-wrap: 조회 페이지 래퍼 * list-item: 거래 항목 (통화 표기 포함) * reference-wrap: 참조 자료 신청 * reference-request-success/fail: 신청 결과 * list-detail-bottom-sheet: 상세 내역 (10개 통화 인스턴스) - 섹션 컴포넌트 다국어화 (4개) * amount-section: 금액 상세 (공급가액, VAT, 합계금액) * issue-section: 발행 정보 (발행대상일자, 적요 등) * supplier-section: 공급자 정보 * receiver-section: 공급받는 자 정보 - 통화 표기 통일 (10개 인스턴스) * 한국어: 1,000원 (suffix) * 영어: ₩1,000 (prefix) - 번역 키 추가: vatReturn 네임스페이스 29개 키 - 기존 번역 키 재사용 (merchant, transaction, common, home) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../ui/list-detail-bottom-sheet.tsx | 75 +++++++++++-------- src/entities/vat-return/ui/list-item.tsx | 9 ++- src/entities/vat-return/ui/list-wrap.tsx | 24 +++--- .../vat-return/ui/reference-request-fail.tsx | 18 +++-- .../ui/reference-request-success.tsx | 22 +++--- src/entities/vat-return/ui/reference-wrap.tsx | 14 ++-- .../vat-return/ui/section/amount-section.tsx | 39 +++++----- .../vat-return/ui/section/issue-section.tsx | 26 ++++--- .../ui/section/receiver-section.tsx | 10 ++- .../ui/section/supplier-section.tsx | 10 ++- src/entities/vat-return/ui/vat-return-tab.tsx | 20 ++--- src/locales/en.json | 37 ++++++++- src/locales/ko.json | 33 ++++++++ src/pages/vat-return/detail-page.tsx | 10 ++- src/pages/vat-return/list-page.tsx | 8 +- src/pages/vat-return/reference-page.tsx | 8 +- 16 files changed, 234 insertions(+), 129 deletions(-) diff --git a/src/entities/vat-return/ui/list-detail-bottom-sheet.tsx b/src/entities/vat-return/ui/list-detail-bottom-sheet.tsx index 04fdb3e..6941c74 100644 --- a/src/entities/vat-return/ui/list-detail-bottom-sheet.tsx +++ b/src/entities/vat-return/ui/list-detail-bottom-sheet.tsx @@ -5,6 +5,7 @@ import { NumericFormat } from "react-number-format"; import { SlideDown } from 'react-slidedown'; import 'react-slidedown/lib/slidedown.css'; import { useEffect, useState } from "react"; +import { useTranslation } from 'react-i18next'; export interface VatReturnListDetailBottomSheetProps { bottomSheetOn: boolean; @@ -25,7 +26,7 @@ export const VatReturnListDetailBottomSheet = ({ vatAmount, totalAmount }: VatReturnListDetailBottomSheetProps) => { - + const { t, i18n } = useTranslation(); const [isOpenDetail, setIsOpenDetail] = useState>([]); const onClickToClose = () => { @@ -48,14 +49,14 @@ export const VatReturnListDetailBottomSheet = ({
-

세부내역 조회

- @@ -66,46 +67,50 @@ export const VatReturnListDetailBottomSheet = ({
-
거래금액 :
+
{t('vatReturn.transactionAmount')} :
-
공급가액 :
+
{t('vatReturn.supplyAmount')} :
-
VAT :
+
{t('vatReturn.vat')} :
-
합계금액 :
+
{t('vatReturn.totalAmount')} :
@@ -113,8 +118,8 @@ export const VatReturnListDetailBottomSheet = ({ { breakdown && breakdown.length > 0 &&
-
거래일
-
합계금액
+
{t('vatReturn.transactionDate')}
+
{t('vatReturn.totalAmount')}
{ breakdown.map((value, index) => ( @@ -125,14 +130,15 @@ export const VatReturnListDetailBottomSheet = ({
- openDetail(index) } /> @@ -142,33 +148,36 @@ export const VatReturnListDetailBottomSheet = ({ { isOpenDetail[index] &&
- 거래금액 - 공급가액 - VAT + {t('vatReturn.transactionAmount')} + {t('vatReturn.supplyAmount')} + {t('vatReturn.vat')}
diff --git a/src/entities/vat-return/ui/list-item.tsx b/src/entities/vat-return/ui/list-item.tsx index b36b2c6..40a2965 100644 --- a/src/entities/vat-return/ui/list-item.tsx +++ b/src/entities/vat-return/ui/list-item.tsx @@ -1,4 +1,5 @@ import { NumericFormat } from 'react-number-format'; +import { useTranslation } from 'react-i18next'; import { PATHS } from '@/shared/constants/paths'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; import { ListItemProps } from '../model/types'; @@ -12,6 +13,7 @@ export const ListItem = ({ paymentMethod, amount }: ListItemProps) => { + const { t, i18n } = useTranslation(); const { navigate } = useNavigate(); const onClickToNavigate = () => { @@ -41,11 +43,12 @@ export const ListItem = ({
+ prefix={i18n.language === 'en' ? t('home.currencySymbol') : ''} + suffix={i18n.language === 'en' ? '' : t('home.currencyWon')} + >
diff --git a/src/entities/vat-return/ui/list-wrap.tsx b/src/entities/vat-return/ui/list-wrap.tsx index c1a2a0a..0cab181 100644 --- a/src/entities/vat-return/ui/list-wrap.tsx +++ b/src/entities/vat-return/ui/list-wrap.tsx @@ -1,16 +1,17 @@ import moment from 'moment'; import { useEffect, useState } from 'react'; +import { useTranslation } from 'react-i18next'; import { IMAGE_ROOT } from '@/shared/constants/common'; import { ListFilter } from './filter/list-filter'; import { SortTypeBox } from '@/entities/common/ui/sort-type-box'; import { DefaultRequestPagination, SortTypeKeys } from '@/entities/common/model/types'; import { DEFAULT_PAGE_PARAM } from '@/entities/common/model/constant'; -import { - VatReturnListContent, - VatReturnListParams, - VatReturnListResponse, - VatReturnReceiptType, - VatReturnTargetType +import { + VatReturnListContent, + VatReturnListParams, + VatReturnListResponse, + VatReturnReceiptType, + VatReturnTargetType } from '../model/types'; import { useVatReturnListMutation } from '../api/use-vat-return-list-mutation'; import { ListDateGroup } from './list-date-group'; @@ -19,6 +20,7 @@ import { EmailBottomSheet } from '@/entities/common/ui/email-bottom-sheet'; import useIntersectionObserver from '@/widgets/intersection-observer'; export const ListWrap = () => { + const { t } = useTranslation(); const userMid = useStore.getState().UserStore.mid; const [onActionIntersect, setOnActionIntersect] = useState(false); @@ -175,20 +177,20 @@ export const ListWrap = () => { value={ moment(startMonth+'01').format('YYYY.MM') + '-' + moment(endMonth+'01').format('YYYY.MM')} readOnly={ true } /> -
diff --git a/src/entities/vat-return/ui/reference-request-fail.tsx b/src/entities/vat-return/ui/reference-request-fail.tsx index 4a44781..5206108 100644 --- a/src/entities/vat-return/ui/reference-request-fail.tsx +++ b/src/entities/vat-return/ui/reference-request-fail.tsx @@ -1,5 +1,6 @@ import { motion } from 'framer-motion'; -import { +import { useTranslation } from 'react-i18next'; +import { FilterMotionDuration, FilterMotionStyle, FilterMotionVariants @@ -16,6 +17,7 @@ export const ReferenceRequestFail = ({ setPageOn, errorMsg }: ReferenceRequestFailProps) => { + const { t } = useTranslation(); const onClickToClose = () => { setPageOn(false); }; @@ -35,27 +37,27 @@ export const ReferenceRequestFail = ({ style={{ margin: '0 auto' }} >
-

- 부가세 참고 자료 + {t('vatReturn.vatReferenceData')}
- 신청 실패하였습니다 + {t('vatReturn.requestFailed')}

- 결과 : + {t('vatReturn.result')} : { errorMsg }

- + >{t('common.confirm')}
diff --git a/src/entities/vat-return/ui/reference-request-success.tsx b/src/entities/vat-return/ui/reference-request-success.tsx index a576aea..d701f5a 100644 --- a/src/entities/vat-return/ui/reference-request-success.tsx +++ b/src/entities/vat-return/ui/reference-request-success.tsx @@ -1,5 +1,6 @@ import { motion } from 'framer-motion'; -import { +import { useTranslation } from 'react-i18next'; +import { FilterMotionDuration, FilterMotionStyle, FilterMotionVariants @@ -19,6 +20,7 @@ export const ReferenceRequestSuccess = ({ email, startDate }: ReferenceRequestSuccessProps) => { + const { t } = useTranslation(); const onClickToClose = () => { setPageOn(false); }; @@ -33,31 +35,31 @@ export const ReferenceRequestSuccess = ({ style={ FilterMotionStyle } >
-

- 부가세 참고 자료 + {t('vatReturn.vatReferenceData')}
- 신청이 완료되었습니다. + {t('vatReturn.requestCompleted')}

-

파일은 선택한 수령 방법으로 제공됩니다.

+

{t('vatReturn.fileProvidedBySelectedMethod')}

- 신청일 : { moment(startDate).format('YYYY.MM.DD') } + {t('vatReturn.applicationDate')} : { moment(startDate).format('YYYY.MM.DD') }
- 메일주소 : { email } + {t('vatReturn.emailAddress')} : { email }

-

참고용 자료이므로 반드시 내부 회계자료 등과
비교 후 사용해 주세요.

+

{t('vatReturn.referenceDataNote')}

- + >{t('common.confirm')}
diff --git a/src/entities/vat-return/ui/reference-wrap.tsx b/src/entities/vat-return/ui/reference-wrap.tsx index 374f490..9695d52 100644 --- a/src/entities/vat-return/ui/reference-wrap.tsx +++ b/src/entities/vat-return/ui/reference-wrap.tsx @@ -1,5 +1,6 @@ import moment from 'moment'; import { useState } from 'react'; +import { useTranslation } from 'react-i18next'; import { FilterCalendar } from '@/shared/ui/filter/calendar'; import { FilterSelect } from '@/shared/ui/filter/select'; import { ReferenceRequestSuccess } from './reference-request-success'; @@ -11,6 +12,7 @@ import { useStore } from '@/shared/model/store'; import { useVatReturnReferenceRequestMutation } from '../api/use-vat-return-reference-request-mutation'; export const ReferenceWrap = () => { + const { t } = useTranslation(); const midOptions = useStore.getState().UserStore.selectOptionsMids; const emailOptions = useStore.getState().UserStore.selectOptionsEmails; const userMid = useStore.getState().UserStore.mid; @@ -48,13 +50,13 @@ export const ReferenceWrap = () => { <>
{ maxBtn={ 2 } >
- + >{t('vatReturn.requestData')}
{ + const { t, i18n } = useTranslation(); const [isOpen, setIsOpen] = useState(false); const [downloadBottomSheetOn, setDownloadBottomSheetOn] = useState(false); @@ -35,44 +37,47 @@ export const AmountSection = ({
+ {i18n.language === 'en' && {t('home.currencySymbol')}} - + {i18n.language === 'en' ? '' : t('home.currencyWon')}
-
- { isOpen && + { isOpen &&
  • - ·  공급가액 + ·  {t('vatReturn.supplyAmount')}
  • - ·  VAT + ·  {t('vatReturn.vat')}
  • @@ -85,17 +90,17 @@ export const AmountSection = ({
- { !!detail.issueDate && - moment(detail.issueDate).format('YYYY.MM.DD') + { !!detail.issueDate && + moment(detail.issueDate).format('YYYY.MM.DD') }
- + >{t('vatReturn.taxInvoice')}
{ !!downloadBottomSheetOn && diff --git a/src/entities/vat-return/ui/section/issue-section.tsx b/src/entities/vat-return/ui/section/issue-section.tsx index 1ffbbef..44aa96a 100644 --- a/src/entities/vat-return/ui/section/issue-section.tsx +++ b/src/entities/vat-return/ui/section/issue-section.tsx @@ -1,4 +1,5 @@ import moment from 'moment'; +import { useTranslation } from 'react-i18next'; import { VatReturnDetailResponse } from '../../model/types'; export interface IssueSectionProps { @@ -8,46 +9,47 @@ export interface IssueSectionProps { export const IssueSection = ({ detail }: IssueSectionProps) => { + const { t } = useTranslation(); return ( <>
-
발행 정보
+
{t('vatReturn.issueInfo')}
  • MID { detail.mid }
  • - 발행대상일자 + {t('vatReturn.issueTargetDate')} { !!detail.targetBusinessStartDate && !!detail.targetBusinessEndDate && - moment(detail.targetBusinessStartDate).format('YYYY.MM.DD') - + - ' ~ ' - + - moment(detail.targetBusinessEndDate).format('YYYY.MM.DD') + moment(detail.targetBusinessStartDate).format('YYYY.MM.DD') + + + ' ~ ' + + + moment(detail.targetBusinessEndDate).format('YYYY.MM.DD') }
  • - 발행일자 + {t('vatReturn.issueDate')} { !!detail.issueDate && - moment(detail.issueDate).format('YYYY.MM.DD') + moment(detail.issueDate).format('YYYY.MM.DD') }
  • - 적요 + {t('vatReturn.subject')} { detail.subject }
  • - 발행대상 + {t('vatReturn.issueTarget')} { detail.targetType }
  • - 영수구분 + {t('vatReturn.receiptType')} { detail.receiptType }
  • diff --git a/src/entities/vat-return/ui/section/receiver-section.tsx b/src/entities/vat-return/ui/section/receiver-section.tsx index 9b4ae9b..261b57a 100644 --- a/src/entities/vat-return/ui/section/receiver-section.tsx +++ b/src/entities/vat-return/ui/section/receiver-section.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import { VatReturnDetailResponse } from '../../model/types'; export interface ReceiverSectionProps { @@ -7,23 +8,24 @@ export interface ReceiverSectionProps { export const ReceiverSection = ({ detail }: ReceiverSectionProps) => { + const { t } = useTranslation(); return ( <>
    -
    공급받는 자 정보
    +
    {t('vatReturn.receiverInfo')}
    • - 사업자등록번호 + {t('merchant.businessRegistrationNumber')} { detail.receiverBusinessRegistrationNumber }
    • - 상호명 + {t('merchant.companyName')} { detail.receiverCompanyName }
    • - 대표자명 + {t('merchant.representativeName')} { detail.receiverCeoName }
    diff --git a/src/entities/vat-return/ui/section/supplier-section.tsx b/src/entities/vat-return/ui/section/supplier-section.tsx index f88f19b..b538c4c 100644 --- a/src/entities/vat-return/ui/section/supplier-section.tsx +++ b/src/entities/vat-return/ui/section/supplier-section.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import { VatReturnDetailResponse } from '../../model/types'; export interface SupplierSectionProps { @@ -7,23 +8,24 @@ export interface SupplierSectionProps { export const SupplierSection = ({ detail }: SupplierSectionProps) => { + const { t } = useTranslation(); return ( <>
    -
    공급자 정보
    +
    {t('vatReturn.supplierInfo')}
    • - 사업자등록번호 + {t('merchant.businessRegistrationNumber')} { detail.supplierBusinessRegistrationNumber }
    • - 상호명 + {t('merchant.companyName')} { detail.supplierCompanyName }
    • - 대표자명 + {t('merchant.representativeName')} { detail.supplierCeoName }
    diff --git a/src/entities/vat-return/ui/vat-return-tab.tsx b/src/entities/vat-return/ui/vat-return-tab.tsx index 1f8fc3f..4c3335b 100644 --- a/src/entities/vat-return/ui/vat-return-tab.tsx +++ b/src/entities/vat-return/ui/vat-return-tab.tsx @@ -1,13 +1,15 @@ +import { useTranslation } from 'react-i18next'; import { PATHS } from '@/shared/constants/paths'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; -import { - VatReturnTabKeys, - VatReturnTabProps +import { + VatReturnTabKeys, + VatReturnTabProps } from '../model/types'; export const VatReturnTab = ({ activeTab }: VatReturnTabProps) => { + const { t } = useTranslation(); const { navigate } = useNavigate(); const onClickToNavigation = (tab: VatReturnTabKeys) => { @@ -23,14 +25,14 @@ export const VatReturnTab = ({ return( <>
    - - + + onClick={ () => onClickToNavigation(VatReturnTabKeys.VatReference) } + >{t('vatReturn.vatReference')}
    ); diff --git a/src/locales/en.json b/src/locales/en.json index f42d56a..2effa66 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -190,8 +190,8 @@ }, "account": { "title": "Account Management", - "userManagement": "User Management", - "passwordManagement": "Password Management", + "userManagement": "Users", + "passwordManagement": "Passwords", "userSettings": "User Settings", "addUser": "Add User", "addAccount": "Add Account", @@ -491,6 +491,39 @@ "faceAuth": { "title": "Face Authentication" }, + "vatReturn": { + "title": "VAT Return Data", + "taxInvoice": "Tax Invoice", + "vatReference": "VAT Reference", + "taxInvoiceDetail": "Tax Invoice Details", + "viewDetails": "View Details", + "transactionAmount": "Transaction Amount", + "supplyAmount": "Supply Amount", + "vat": "VAT", + "totalAmount": "Total Amount", + "transactionDate": "Transaction Date", + "amountDetail": "Amount Details", + "issueInfo": "Issue Information", + "issueTargetDate": "Issue Target Date", + "issueDate": "Issue Date", + "subject": "Subject", + "issueTarget": "Issue Target", + "receiptType": "Receipt Type", + "supplierInfo": "Supplier Information", + "receiverInfo": "Receiver Information", + "taxExemptionType": "Tax/Exemption Type", + "transactionPeriod": "Transaction Period", + "receivingEmail": "Receiving Email", + "requestData": "Request Data", + "vatReferenceData": "VAT Reference Data", + "requestCompleted": "Request completed.", + "requestFailed": "Request failed", + "fileProvidedBySelectedMethod": "The file will be provided by the selected method.", + "applicationDate": "Application Date", + "emailAddress": "Email Address", + "referenceDataNote": "Please compare with internal accounting data\nbefore using this reference material.", + "result": "Result" + }, "common": { "latest": "Latest", "oldest": "Oldest" diff --git a/src/locales/ko.json b/src/locales/ko.json index 86e7c67..cb69d25 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -495,6 +495,39 @@ "faceAuth": { "title": "안면인증" }, + "vatReturn": { + "title": "부가세 신고 자료", + "taxInvoice": "세금 계산서", + "vatReference": "부가세 참고", + "taxInvoiceDetail": "세금계산서 상세", + "viewDetails": "세부내역 조회", + "transactionAmount": "거래금액", + "supplyAmount": "공급가액", + "vat": "VAT", + "totalAmount": "합계금액", + "transactionDate": "거래일", + "amountDetail": "금액상세", + "issueInfo": "발행 정보", + "issueTargetDate": "발행대상일자", + "issueDate": "발행일자", + "subject": "적요", + "issueTarget": "발행대상", + "receiptType": "영수구분", + "supplierInfo": "공급자 정보", + "receiverInfo": "공급받는 자 정보", + "taxExemptionType": "거래 과세/면세 구분", + "transactionPeriod": "거래기간", + "receivingEmail": "수령메일주소", + "requestData": "자료신청", + "vatReferenceData": "부가세 참고 자료", + "requestCompleted": "신청이 완료되었습니다.", + "requestFailed": "신청 실패하였습니다", + "fileProvidedBySelectedMethod": "파일은 선택한 수령 방법으로 제공됩니다.", + "applicationDate": "신청일", + "emailAddress": "메일주소", + "referenceDataNote": "참고용 자료이므로 반드시 내부 회계자료 등과\n비교 후 사용해 주세요.", + "result": "결과" + }, "common": { "latest": "최신순", "oldest": "오래된순" diff --git a/src/pages/vat-return/detail-page.tsx b/src/pages/vat-return/detail-page.tsx index 827da25..f522681 100644 --- a/src/pages/vat-return/detail-page.tsx +++ b/src/pages/vat-return/detail-page.tsx @@ -1,4 +1,5 @@ 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'; @@ -12,7 +13,7 @@ import { VatReturnDetailResponse } from '@/entities/vat-return/model/types'; import { - useSetOnBack, + useSetOnBack, useSetHeaderTitle, useSetHeaderType, useSetFooterMode @@ -26,6 +27,7 @@ import { VatReturnListDetailBottomSheet } from '@/entities/vat-return/ui/list-de import { useVatReturnBreakdownMutation } from '@/entities/vat-return/api/use-vat-return-breakdown-mutation'; export const DetailPage = () => { + const { t } = useTranslation(); const { navigate } = useNavigate(); const location = useLocation(); @@ -37,7 +39,7 @@ export const DetailPage = () => { const [detail, setDetail] = useState({}); const [breakdown, setBreakdown] = useState>([]); - useSetHeaderTitle('세금계산서 상세'); + useSetHeaderTitle(t('vatReturn.taxInvoiceDetail')); useSetHeaderType(HeaderType.RightClose); useSetOnBack(() => { navigate(PATHS.vatReturn.list); @@ -100,10 +102,10 @@ export const DetailPage = () => {
- + >{t('vatReturn.viewDetails')}
diff --git a/src/pages/vat-return/list-page.tsx b/src/pages/vat-return/list-page.tsx index 693f27e..99273d6 100644 --- a/src/pages/vat-return/list-page.tsx +++ b/src/pages/vat-return/list-page.tsx @@ -1,11 +1,12 @@ import { useState } from 'react'; +import { useTranslation } from 'react-i18next'; import { PATHS } from '@/shared/constants/paths'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; import { VatReturnTab } from '@/entities/vat-return/ui/vat-return-tab'; import { ListWrap } from '@/entities/vat-return/ui/list-wrap'; import { VatReturnTabKeys } from '@/entities/vat-return/model/types'; import { HeaderType } from '@/entities/common/model/types'; -import { +import { useSetHeaderTitle, useSetHeaderType, useSetFooterMode, @@ -13,11 +14,12 @@ import { } from '@/widgets/sub-layout/use-sub-layout'; export const ListPage = () => { + const { t } = useTranslation(); const { navigate } = useNavigate(); const [activeTab, setActiveTab] = useState(VatReturnTabKeys.List); - - useSetHeaderTitle('부가세 신고 자료'); + + useSetHeaderTitle(t('vatReturn.title')); useSetHeaderType(HeaderType.LeftArrow); useSetFooterMode(false); useSetOnBack(() => { diff --git a/src/pages/vat-return/reference-page.tsx b/src/pages/vat-return/reference-page.tsx index c0f90ec..b1e289c 100644 --- a/src/pages/vat-return/reference-page.tsx +++ b/src/pages/vat-return/reference-page.tsx @@ -1,11 +1,12 @@ import { useState } from 'react'; +import { useTranslation } from 'react-i18next'; import { PATHS } from '@/shared/constants/paths'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; import { VatReturnTab } from '@/entities/vat-return/ui/vat-return-tab'; import { ReferenceWrap } from '@/entities/vat-return/ui/reference-wrap'; import { VatReturnTabKeys } from '@/entities/vat-return/model/types'; import { HeaderType } from '@/entities/common/model/types'; -import { +import { useSetHeaderTitle, useSetHeaderType, useSetFooterMode, @@ -13,11 +14,12 @@ import { } from '@/widgets/sub-layout/use-sub-layout'; export const ReferencePage = () => { + const { t } = useTranslation(); const { navigate } = useNavigate(); const [activeTab, setActiveTab] = useState(VatReturnTabKeys.VatReference); - - useSetHeaderTitle('부가세 신고 자료'); + + useSetHeaderTitle(t('vatReturn.title')); useSetHeaderType(HeaderType.LeftArrow); useSetFooterMode(false); useSetOnBack(() => { From 133aa44dff006fc01fb4cf6b04692c6475af561f Mon Sep 17 00:00:00 2001 From: HyeonJongKim Date: Thu, 30 Oct 2025 09:29:13 +0900 Subject: [PATCH 2/4] =?UTF-8?q?-=20=EB=B6=80=EA=B0=80=EC=84=9C=EB=B9=84?= =?UTF-8?q?=EC=8A=A4=20=EB=A7=81=ED=81=AC=EA=B2=B0=EC=A0=9C=20:=20?= =?UTF-8?q?=EA=B8=B0=EA=B0=84=EC=97=B0=EC=9E=A5,=EB=A7=81=ED=81=AC=20?= =?UTF-8?q?=EC=A4=91=EB=8B=A8=20=ED=99=9C=EC=84=B1=ED=99=94,=EB=B9=84?= =?UTF-8?q?=ED=99=9C=EC=84=B1=ED=99=94=20=EC=A1=B0=EA=B1=B4=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9,=20=EC=B2=B4=ED=81=AC=EB=B0=95=EC=8A=A4=20Action=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apply/link-payment-apply-confirm-page.tsx | 14 +- .../link-payment/link-payment-detail-page.tsx | 2 +- .../link-payment-separate-approval-page.tsx | 269 +++++++++++++----- ...payment-separate-approval-success-page.tsx | 2 - src/shared/ui/assets/css/style-fix.css | 23 ++ 5 files changed, 221 insertions(+), 89 deletions(-) diff --git a/src/pages/additional-service/link-payment/apply/link-payment-apply-confirm-page.tsx b/src/pages/additional-service/link-payment/apply/link-payment-apply-confirm-page.tsx index e6e011d..4381a08 100644 --- a/src/pages/additional-service/link-payment/apply/link-payment-apply-confirm-page.tsx +++ b/src/pages/additional-service/link-payment/apply/link-payment-apply-confirm-page.tsx @@ -52,17 +52,9 @@ export const LinkPaymentApplyConfirmPage = () => { if (rs.status) { navigate(PATHS.additionalService.linkPayment.confirmSuccess); } else { - // 응답은 성공했지만 status가 false인 경우 - const validationErrors = rs.error?.details?.validationErrors; - if (validationErrors) { - // validation 에러 메시지들을 수집 - const errorMessages = Object.values(validationErrors).join('\n'); - snackBar(`[실패] ${errorMessages}`); - } else { - // 일반 에러 메시지 - const errorMessage = rs.error?.message || '요청을 처리할 수 없습니다.'; - snackBar(`[실패] ${errorMessage}`); - } + // 일반 에러 메시지 + const errorMessage = rs.error?.message || '요청을 처리할 수 없습니다.'; + snackBar(`[실패] ${errorMessage}`); } }) .catch((error) => { diff --git a/src/pages/additional-service/link-payment/link-payment-detail-page.tsx b/src/pages/additional-service/link-payment/link-payment-detail-page.tsx index 61c66a9..e67cf12 100644 --- a/src/pages/additional-service/link-payment/link-payment-detail-page.tsx +++ b/src/pages/additional-service/link-payment/link-payment-detail-page.tsx @@ -157,7 +157,7 @@ export const LinkPaymentDetailPage = () => { diff --git a/src/pages/additional-service/link-payment/separate-approval/link-payment-separate-approval-page.tsx b/src/pages/additional-service/link-payment/separate-approval/link-payment-separate-approval-page.tsx index 57d96ad..6bb1e67 100644 --- a/src/pages/additional-service/link-payment/separate-approval/link-payment-separate-approval-page.tsx +++ b/src/pages/additional-service/link-payment/separate-approval/link-payment-separate-approval-page.tsx @@ -52,11 +52,63 @@ export const LinkPaymentSeparateApprovalPage = () => { const handleCheckboxChange = (subRequestId: string) => { setSelectedItems(prev => { - if (prev.includes(subRequestId)) { - return prev.filter(id => id !== subRequestId); - } else { - return [...prev, subRequestId]; + // 현재 클릭한 item 찾기 + const target = items.find(i => i.subRequestId === subRequestId) + || items.find((_, idx) => `item-${idx}` === subRequestId); + if (!target) return prev; + + // 동일한 requestId를 가진 MAIN, SUB 그룹 가져오기 + const sameRequestIdItems = items.filter(i => i.requestId === target.requestId); + const mainItem = sameRequestIdItems.find(i => i.type === LinkPaymentSeparateType.MAIN); + // PENDING 상태인 SUB만 필터링 + const subItems = sameRequestIdItems.filter(i => + i.type === LinkPaymentSeparateType.SUB && i.paymentStatus === 'PENDING' + ); + + const mainId = mainItem?.subRequestId || (mainItem ? `item-${items.indexOf(mainItem)}` : ''); + const subIds = subItems.map(i => i.subRequestId || `item-${items.indexOf(i)}`); + + // ----------------------------- + // MAIN 클릭 시 + // ----------------------------- + if (target.type === LinkPaymentSeparateType.MAIN) { + const isMainChecked = prev.includes(mainId); + if (isMainChecked) { + // MAIN 해제 → PENDING인 SUB만 해제 + return prev.filter(id => ![mainId, ...subIds].includes(id)); + } else { + // MAIN 체크 → PENDING인 SUB만 추가 + return [...new Set([...prev, mainId, ...subIds])]; + } } + + // ----------------------------- + // SUB 클릭 시 + // ----------------------------- + const isChecked = prev.includes(subRequestId); + let updated: string[] = []; + + if (isChecked) { + // SUB 해제 + updated = prev.filter(id => id !== subRequestId); + + // 해제 후 남은 PENDING SUB 중 하나라도 빠져 있으면 MAIN도 해제 + const allPendingSubsChecked = subIds.every(id => updated.includes(id)); + if (!allPendingSubsChecked && mainId) { + updated = updated.filter(id => id !== mainId); + } + } else { + // SUB 체크 + updated = [...prev, subRequestId]; + + // 모든 PENDING SUB 체크되면 MAIN도 자동 체크 + const allPendingSubsChecked = subIds.every(id => updated.includes(id)); + if (allPendingSubsChecked && mainId) { + updated = [...new Set([...updated, mainId])]; + } + } + + return updated; }); }; @@ -67,12 +119,60 @@ export const LinkPaymentSeparateApprovalPage = () => { })); }; - // 기간연장 버튼 활성화 조건: 선택된 항목이 있고, 모든 선택된 항목의 연장기간이 설정됨 - const isExtendButtonEnabled = () => { - if (selectedItems.length === 0) return false; - return selectedItems.every(id => extendPeriods[id] && extendPeriods[id] !== ''); + // 각 SUB 항목이 연장기간 설정 가능한지 체크 + const canExtendPeriod = (item: ExtensionLinkPaySeparateDetailItem) => { + const today = moment().format('YYYYMMDD'); + const paymentLimitDate = item.paymentLimitDate || ''; + const paymentLimitCount = item.paymentLimitCount || 0; + + // 연장횟수 < 3 이고 유효일자 >= 조회일자 + return paymentLimitCount < 3 && paymentLimitDate >= today; }; + // 각 SUB 항목이 링크중단 가능한지 체크 + const canLinkBreak = (item: ExtensionLinkPaySeparateDetailItem) => { + const today = moment().format('YYYYMMDD'); + const paymentLimitDate = item.paymentLimitDate || ''; + + // 유효일자 >= 조회일자 + return paymentLimitDate >= today; + }; + + const isExtendButtonEnabled = () => { + // MAIN 제외, 체크된 SUB 중에서 + const checkedSubs = items.filter((i, index) => { + const itemId = i.subRequestId || `item-${index}`; + return i.type === LinkPaymentSeparateType.SUB && + selectedItems.includes(itemId) && + i.paymentStatus === 'PENDING'; + }); + + // 체크된 SUB가 없으면 비활성화 + if (checkedSubs.length === 0) return false; + + // 모든 체크된 SUB가 연장 가능하고, 연장기간이 설정되어 있어야 함 + return checkedSubs.every((sub) => { + const itemId = sub.subRequestId || `item-${items.indexOf(sub)}`; + return canExtendPeriod(sub) && extendPeriods[itemId] && extendPeriods[itemId] !== ''; + }); + }; + + const isLinkBreadkEnabled = () => { + // MAIN 제외, 체크된 SUB 중에서 + const checkedSubs = items.filter((i, index) => { + const itemId = i.subRequestId || `item-${index}`; + return i.type === LinkPaymentSeparateType.SUB && + selectedItems.includes(itemId) && + i.paymentStatus === 'PENDING'; + }); + + // 체크된 SUB가 없으면 비활성화 + if (checkedSubs.length === 0) return false; + + // 모든 체크된 SUB가 링크중단 가능해야 함 + return checkedSubs.every(sub => canLinkBreak(sub)); + } + const onClickToValidityPeriod = () => { // 기간연장 바텀시트 열기 setExtendedPeriodBottomSheetOn(true); @@ -94,8 +194,13 @@ export const LinkPaymentSeparateApprovalPage = () => { return; } - // 모든 선택된 항목들의 연장 기간이 설정되었는지 확인 - const allHaveExtendPeriod = selectedItems.every(id => extendPeriods[id]); + // MAIN을 제외한 선택된 SUB 항목들의 연장 기간이 설정되었는지 확인 + const selectedSubItems = selectedItems.filter(id => { + const item = items.find(i => (i.subRequestId || `item-${items.indexOf(i)}`) === id); + return item && item.type === LinkPaymentSeparateType.SUB; + }); + + const allHaveExtendPeriod = selectedSubItems.every(id => extendPeriods[id]); if (!allHaveExtendPeriod) { setErrorMessage('모든 선택된 항목의 연장 기간을 선택해주세요.'); @@ -103,15 +208,15 @@ export const LinkPaymentSeparateApprovalPage = () => { return; } - // 첫 번째 선택된 항목의 연장 기간 사용 (모든 항목이 같은 기간으로 연장) - const firstSelectedId = selectedItems[0] as string; - const extendDays = extendPeriods[firstSelectedId] as string; + // 첫 번째 선택된 SUB 항목의 연장 기간 사용 (모든 항목이 같은 기간으로 연장) + const firstSelectedSubId = selectedSubItems[0] as string; + const extendDays = extendPeriods[firstSelectedSubId] as string; // 연장 날짜 계산 (오늘 날짜 + 연장일수) const extendDate = moment().add(parseInt(extendDays), 'days').format('YYYYMMDD'); - // selectedItems를 API 형식으로 변환 - const selectedItemsData = selectedItems.map(itemId => { + // MAIN을 제외한 SUB 항목만 API 형식으로 변환 + const selectedItemsData = selectedSubItems.map(itemId => { const item = items.find(i => (i.subRequestId || `item-${items.indexOf(i)}`) === itemId); return { type: item?.type || '', @@ -157,7 +262,13 @@ export const LinkPaymentSeparateApprovalPage = () => { return; } - const selectedItemsData = selectedItems.map(itemId => { + // MAIN을 제외한 SUB 항목만 필터링 + const selectedSubItems = selectedItems.filter(id => { + const item = items.find(i => (i.subRequestId || `item-${items.indexOf(i)}`) === id); + return item && item.type === LinkPaymentSeparateType.SUB; + }); + + const selectedItemsData = selectedSubItems.map(itemId => { const item = items.find(i => (i.subRequestId || `item-${items.indexOf(i)}`) === itemId); return { type: item?.type || '', @@ -230,67 +341,75 @@ export const LinkPaymentSeparateApprovalPage = () => {
{items.map((item, index) => { const itemId = item.subRequestId || `item-${index}`; + const isDisabled = item.paymentStatus !== 'PENDING'; return ( -
-
- handleCheckboxChange(itemId)} - className="card-checkbox" - /> - [{item.type}] - {item.moid} -
-
-
    -
  • - • 거래금액: - {item.amount.toLocaleString()} -
  • -
  • - • 결제상태: - {item.paymentStatusName} -
  • - {item.type !== LinkPaymentSeparateType.MAIN && ( - <> -
  • - • 유효기간: - - {item.paymentLimitDate - ? moment(item.paymentLimitDate, 'YYYYMMDD').format('YYYY/MM/DD') - : '-' - } - -
  • -
  • - • 연장횟수: - {item.paymentLimitCount} -
  • - - )} -
-
-
-
- - +
+
+ handleCheckboxChange(itemId)} + className="card-checkbox" + disabled={item.paymentStatus !== 'PENDING'} + /> + [{item.type}] + {item.moid} +
+
+
    +
  • + • 거래금액: + {item.amount.toLocaleString()} +
  • +
  • + • 결제상태: + {item.paymentStatusName} +
  • + {item.type !== LinkPaymentSeparateType.MAIN && ( + <> +
  • + • 유효기간: + + {item.paymentLimitDate + ? moment(item.paymentLimitDate, 'YYYYMMDD').format('YYYY/MM/DD') + : '-' + } + +
  • +
  • + • 연장횟수: + {item.paymentLimitCount} +
  • + + )} +
+
+
+
+ + +
-
); })}
@@ -306,7 +425,7 @@ export const LinkPaymentSeparateApprovalPage = () => {
diff --git a/src/pages/additional-service/link-payment/separate-approval/link-payment-separate-approval-success-page.tsx b/src/pages/additional-service/link-payment/separate-approval/link-payment-separate-approval-success-page.tsx index d5d5711..3699a61 100644 --- a/src/pages/additional-service/link-payment/separate-approval/link-payment-separate-approval-success-page.tsx +++ b/src/pages/additional-service/link-payment/separate-approval/link-payment-separate-approval-success-page.tsx @@ -1,6 +1,4 @@ import { motion } from 'framer-motion'; -import { useNavigate } from '@/shared/lib/hooks/use-navigate'; -import { PATHS } from "@/shared/constants/paths"; import { FilterMotionDuration, FilterMotionStyle, diff --git a/src/shared/ui/assets/css/style-fix.css b/src/shared/ui/assets/css/style-fix.css index 9b4648e..3e865ee 100644 --- a/src/shared/ui/assets/css/style-fix.css +++ b/src/shared/ui/assets/css/style-fix.css @@ -233,6 +233,29 @@ main.home-main{ box-shadow: 0 4px 12px rgba(62, 106, 252, 0.2); } +/* PENDING이 아닌 항목 비활성화 스타일 */ +.approval-card.disabled { + opacity: 0.5; + background: var(--color-F9F9F9); + pointer-events: none; +} + +.approval-card.disabled .card-checkbox { + cursor: not-allowed; + background-color: var(--color-E6E6E6); + border-color: var(--color-CCCCCC); +} + +.approval-card.disabled .card-tid, +.approval-card.disabled .info-list .value { + color: var(--color-999999); +} + +.approval-card.disabled .period-selector select { + background-color: var(--color-F3F3F3); + cursor: not-allowed; +} + .approval-card .card-checkbox { display: block !important; position: absolute; From 3dbd6b4dda47a28ac39ea72b6e4fdbed6e5eb9b8 Mon Sep 17 00:00:00 2001 From: Jay Sheen Date: Thu, 30 Oct 2025 09:38:47 +0900 Subject: [PATCH 3/4] =?UTF-8?q?=ED=86=B5=ED=99=94=20=ED=91=9C=EA=B8=B0=20?= =?UTF-8?q?=EB=B0=A9=EC=8B=9D=20=EA=B0=9C=EC=84=A0:=20t('home.money',=20{?= =?UTF-8?q?=20value=20})=20=ED=8C=A8=ED=84=B4=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=ED=86=B5=EC=9D=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/info-wrap/title-info-wrap.tsx | 16 +--- .../additional-service/ui/list-item.tsx | 40 ++------- .../home/ui/day-status-box-container1.tsx | 24 +---- .../home/ui/day-status-box-container2.tsx | 32 +------ .../ui/no-interest-info-bottom-sheet.tsx | 8 +- .../ui/info-wrap/amount-info-wrap.tsx | 88 +++---------------- src/entities/settlement/ui/list-item.tsx | 10 +-- src/entities/settlement/ui/list-wrap.tsx | 8 +- .../ui/list-detail-bottom-sheet.tsx | 64 ++------------ src/entities/vat-return/ui/list-item.tsx | 8 +- .../vat-return/ui/section/amount-section.tsx | 24 +---- src/locales/en.json | 1 + src/locales/ko.json | 1 + .../additional-service/ars/detail-page.tsx | 8 +- .../fund-account/result-detail-page.tsx | 8 +- .../fund-account/transfer-detail-page.tsx | 8 +- .../additional-service/payout/detail-page.tsx | 8 +- .../transaction/all-transaction/list-page.tsx | 8 +- .../transaction/cash-receipt/list-page.tsx | 16 +--- 19 files changed, 49 insertions(+), 331 deletions(-) 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 614fe8f..fd5b79a 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 @@ -47,13 +47,7 @@ export const TitleInfoWrap = ({ <>
- + {t('home.money', { value: })}
{titleInfo?.corpName}
@@ -65,13 +59,7 @@ export const TitleInfoWrap = ({ <>
- + {t('home.money', { value: })}
{titleInfo?.corpName}
diff --git a/src/entities/additional-service/ui/list-item.tsx b/src/entities/additional-service/ui/list-item.tsx index 85bf42b..0ea5979 100644 --- a/src/entities/additional-service/ui/list-item.tsx +++ b/src/entities/additional-service/ui/list-item.tsx @@ -557,13 +557,7 @@ export const ListItem = ({ else if (additionalServiceCategory === AdditionalServiceCategory.KeyInPayment) { rs.push(
- + {t('home.money', { value: })}
); } @@ -572,13 +566,7 @@ export const ListItem = ({ ) { rs.push(
- + {t('home.money', { value: })}
); } @@ -588,13 +576,7 @@ export const ListItem = ({ key="payout-item-amount" className="transaction-amount" > - + {t('home.money', { value: })}
); } @@ -606,13 +588,7 @@ export const ListItem = ({ key="fund-account-transfer-amount" className="transaction-amount" > - + {t('home.money', { value: })} ); } @@ -622,13 +598,7 @@ export const ListItem = ({ key="payout-item-amount" className="transaction-amount" > - + {t('home.money', { value: })} ); } diff --git a/src/entities/home/ui/day-status-box-container1.tsx b/src/entities/home/ui/day-status-box-container1.tsx index 3e65ba5..0b7b0e2 100644 --- a/src/entities/home/ui/day-status-box-container1.tsx +++ b/src/entities/home/ui/day-status-box-container1.tsx @@ -71,13 +71,7 @@ export const BoxContainer1 = () => {

{t('home.todaySales')}

- + {t('home.money', { value: })} = 0)? 'plus': 'minus'}` }> {

{t('home.todaySettlement')}

diff --git a/src/entities/home/ui/day-status-box-container2.tsx b/src/entities/home/ui/day-status-box-container2.tsx index 1594006..2202729 100644 --- a/src/entities/home/ui/day-status-box-container2.tsx +++ b/src/entities/home/ui/day-status-box-container2.tsx @@ -112,13 +112,7 @@ export const BoxContainer2 = () => {

{t('home.totalSales')}

- + {t('home.money', { value: })} = 0)? 'plus': 'minus'}` }> {

{t('home.totalSettlement')}

- + {t('home.money', { value: })} = 0)? 'plus': 'minus'}` }> {

{t('home.averageTransactionAmount')}

- + {t('home.money', { value: })}
@@ -192,13 +174,7 @@ export const BoxContainer2 = () => {

{t('home.dailyAverageSalesAndCount')}

- + {t('home.money', { value: })} ( {t('payment.applicationAmount')} : - + {t('home.money', { value: })}
diff --git a/src/entities/settlement/ui/info-wrap/amount-info-wrap.tsx b/src/entities/settlement/ui/info-wrap/amount-info-wrap.tsx index 9b2cf44..ba32867 100644 --- a/src/entities/settlement/ui/info-wrap/amount-info-wrap.tsx +++ b/src/entities/settlement/ui/info-wrap/amount-info-wrap.tsx @@ -22,13 +22,7 @@ export const AmountInfoWrap = ({
  • {t('settlement.totalTransactionAmount')} - + {t('home.money', { value: })} ·  {t('settlement.creditCard')} - + {t('home.money', { value: })} ·  {t('settlement.accountTransfer')} - + {t('home.money', { value: })} {t('settlement.transactionAmount')} - + {t('home.money', { value: })}
  • {t('settlement.paymentFee')} - + {t('home.money', { value: })}
  • {t('settlement.escrowFee')} - + {t('home.money', { value: })}
  • {t('settlement.authFee')} - + {t('home.money', { value: })}
  • VAT - + {t('home.money', { value: })}
  • {t('settlement.expectedSettlementAmount')} - + {t('home.money', { value: })}
  • {t('settlement.preSettlementCancelOffset')} - + {t('home.money', { value: })}
  • {t('settlement.settlementAmount')} - + {t('home.money', { value: })}
  • diff --git a/src/entities/settlement/ui/list-item.tsx b/src/entities/settlement/ui/list-item.tsx index 7ee755f..72030f5 100644 --- a/src/entities/settlement/ui/list-item.tsx +++ b/src/entities/settlement/ui/list-item.tsx @@ -65,15 +65,7 @@ export const ListItem = ({ }
    - { - - } + {t('home.money', { value: })}
    diff --git a/src/entities/settlement/ui/list-wrap.tsx b/src/entities/settlement/ui/list-wrap.tsx index be990eb..471dee8 100644 --- a/src/entities/settlement/ui/list-wrap.tsx +++ b/src/entities/settlement/ui/list-wrap.tsx @@ -391,13 +391,7 @@ export const ListWrap = ({
    {t('settlement.settlementAmount')}
    - + {t('home.money', { value: })}
    @@ -129,13 +105,7 @@ export const VatReturnListDetailBottomSheet = ({ { value.transactionDate? moment(value.transactionDate).format('YYYY-MM-DD'): '' }
    - + {t('home.money', { value: })}
    - + {t('home.money', { value: })} - + {t('home.money', { value: })} - + {t('home.money', { value: })}
    diff --git a/src/entities/vat-return/ui/list-item.tsx b/src/entities/vat-return/ui/list-item.tsx index 40a2965..aa52b58 100644 --- a/src/entities/vat-return/ui/list-item.tsx +++ b/src/entities/vat-return/ui/list-item.tsx @@ -42,13 +42,7 @@ export const ListItem = ({
    - + {t('home.money', { value: })}
    diff --git a/src/entities/vat-return/ui/section/amount-section.tsx b/src/entities/vat-return/ui/section/amount-section.tsx index 81635b1..d752c27 100644 --- a/src/entities/vat-return/ui/section/amount-section.tsx +++ b/src/entities/vat-return/ui/section/amount-section.tsx @@ -37,13 +37,7 @@ export const AmountSection = ({
    - {i18n.language === 'en' && {t('home.currencySymbol')}} - - {i18n.language === 'en' ? '' : t('home.currencyWon')} + {t('home.money', { value: })}
    ); } diff --git a/src/entities/home/ui/day-status-box-container1.tsx b/src/entities/home/ui/day-status-box-container1.tsx index 0b7b0e2..b9ef7d6 100644 --- a/src/entities/home/ui/day-status-box-container1.tsx +++ b/src/entities/home/ui/day-status-box-container1.tsx @@ -71,7 +71,7 @@ export const BoxContainer1 = () => {

    {t('home.todaySales')}

    - {t('home.money', { value: })} + {t('home.money', { value: new Intl.NumberFormat('en-US').format(sales?.todayTotalAmount || 0) })} = 0)? 'plus': 'minus'}` }> {

    {t('home.todaySettlement')}

    diff --git a/src/entities/home/ui/day-status-box-container2.tsx b/src/entities/home/ui/day-status-box-container2.tsx index 2202729..9a24894 100644 --- a/src/entities/home/ui/day-status-box-container2.tsx +++ b/src/entities/home/ui/day-status-box-container2.tsx @@ -112,7 +112,7 @@ export const BoxContainer2 = () => {

    {t('home.totalSales')}

    - {t('home.money', { value: })} + {t('home.money', { value: new Intl.NumberFormat('en-US').format(sales?.currentMonthAmount || 0) })} = 0)? 'plus': 'minus'}` }> {

    {t('home.totalSettlement')}

    - {t('home.money', { value: })} + {t('home.money', { value: new Intl.NumberFormat('en-US').format(settlement?.currentMonthSettlementAmount || 0) })} = 0)? 'plus': 'minus'}` }> {

    {t('home.averageTransactionAmount')}

    - {t('home.money', { value: })} + {t('home.money', { value: new Intl.NumberFormat('en-US').format(averageTransactionAmount || 0) })}
    @@ -174,7 +174,7 @@ export const BoxContainer2 = () => {

    {t('home.dailyAverageSalesAndCount')}

    - {t('home.money', { value: })} + {t('home.money', { value: new Intl.NumberFormat('en-US').format(dailyAverageSales || 0) })} ( {t('payment.applicationAmount')} : - {t('home.money', { value: })} + {t('home.money', { value: new Intl.NumberFormat('en-US').format(value.applicationAmount || 0) })}
    diff --git a/src/entities/settlement/ui/info-wrap/amount-info-wrap.tsx b/src/entities/settlement/ui/info-wrap/amount-info-wrap.tsx index ba32867..0af3e0e 100644 --- a/src/entities/settlement/ui/info-wrap/amount-info-wrap.tsx +++ b/src/entities/settlement/ui/info-wrap/amount-info-wrap.tsx @@ -22,7 +22,7 @@ export const AmountInfoWrap = ({
  • {t('settlement.totalTransactionAmount')} - {t('home.money', { value: })} + {t('home.money', { value: new Intl.NumberFormat('en-US').format(amountInfo?.totalTransactionAmount || 0) })} ·  {t('settlement.creditCard')} - {t('home.money', { value: })} + {t('home.money', { value: new Intl.NumberFormat('en-US').format(amountInfo?.creditCardAmount || 0) })} ·  {t('settlement.accountTransfer')} - {t('home.money', { value: })} + {t('home.money', { value: new Intl.NumberFormat('en-US').format(amountInfo?.accountTransferAmount || 0) })} {t('settlement.transactionAmount')} - {t('home.money', { value: })} + {t('home.money', { value: new Intl.NumberFormat('en-US').format(amountInfo?.transactionAmount || 0) })}
  • {t('settlement.paymentFee')} - {t('home.money', { value: })} + {t('home.money', { value: new Intl.NumberFormat('en-US').format(amountInfo?.paymentFee || 0) })}
  • {t('settlement.escrowFee')} - {t('home.money', { value: })} + {t('home.money', { value: new Intl.NumberFormat('en-US').format(amountInfo?.escrowFee || 0) })}
  • {t('settlement.authFee')} - {t('home.money', { value: })} + {t('home.money', { value: new Intl.NumberFormat('en-US').format(amountInfo?.authFee || 0) })}
  • VAT - {t('home.money', { value: })} + {t('home.money', { value: new Intl.NumberFormat('en-US').format(amountInfo?.vatFee || 0) })}
  • {t('settlement.expectedSettlementAmount')} - {t('home.money', { value: })} + {t('home.money', { value: new Intl.NumberFormat('en-US').format(amountInfo?.settlementAmount || 0) })}
  • {t('settlement.preSettlementCancelOffset')} - {t('home.money', { value: })} + {t('home.money', { value: new Intl.NumberFormat('en-US').format(amountInfo?.preSettlementCancelOffset || 0) })}
  • {t('settlement.settlementAmount')} - {t('home.money', { value: })} + {t('home.money', { value: new Intl.NumberFormat('en-US').format(amountInfo?.finalSettlementAmount || 0) })}
  • diff --git a/src/entities/settlement/ui/list-item.tsx b/src/entities/settlement/ui/list-item.tsx index 72030f5..b1568f6 100644 --- a/src/entities/settlement/ui/list-item.tsx +++ b/src/entities/settlement/ui/list-item.tsx @@ -65,7 +65,7 @@ export const ListItem = ({ }
    - {t('home.money', { value: })} + {t('home.money', { value: new Intl.NumberFormat('en-US').format(settlementAmount || transactionAmount || 0) })}
    diff --git a/src/entities/settlement/ui/list-wrap.tsx b/src/entities/settlement/ui/list-wrap.tsx index 471dee8..0f2b8cb 100644 --- a/src/entities/settlement/ui/list-wrap.tsx +++ b/src/entities/settlement/ui/list-wrap.tsx @@ -391,7 +391,7 @@ export const ListWrap = ({
    {t('settlement.settlementAmount')}
    - {t('home.money', { value: })} + {t('home.money', { value: new Intl.NumberFormat('en-US').format(settlementAmount || 0) })}
    @@ -105,7 +105,7 @@ export const VatReturnListDetailBottomSheet = ({ { value.transactionDate? moment(value.transactionDate).format('YYYY-MM-DD'): '' }
    - {t('home.money', { value: })} + {t('home.money', { value: new Intl.NumberFormat('en-US').format(value.totalAmount || 0) })}
    - {t('home.money', { value: })} + {t('home.money', { value: new Intl.NumberFormat('en-US').format(value.transactionAmount || 0) })} - {t('home.money', { value: })} + {t('home.money', { value: new Intl.NumberFormat('en-US').format(value.supplyAmount || 0) })} - {t('home.money', { value: })} + {t('home.money', { value: new Intl.NumberFormat('en-US').format(value.vatAmount || 0) })}
    diff --git a/src/entities/vat-return/ui/list-item.tsx b/src/entities/vat-return/ui/list-item.tsx index aa52b58..955f429 100644 --- a/src/entities/vat-return/ui/list-item.tsx +++ b/src/entities/vat-return/ui/list-item.tsx @@ -42,7 +42,7 @@ export const ListItem = ({
    - {t('home.money', { value: })} + {t('home.money', { value: new Intl.NumberFormat('en-US').format(amount || 0) })}
    diff --git a/src/entities/vat-return/ui/section/amount-section.tsx b/src/entities/vat-return/ui/section/amount-section.tsx index d752c27..0862d5a 100644 --- a/src/entities/vat-return/ui/section/amount-section.tsx +++ b/src/entities/vat-return/ui/section/amount-section.tsx @@ -37,7 +37,7 @@ export const AmountSection = ({
    - {t('home.money', { value: })} + {t('home.money', { value: new Intl.NumberFormat('en-US').format(detail.totalAmount || 0) })}