Convert transaction constants to i18n-compatible getter functions

- Convert all hardcoded constant arrays to functions accepting TFunction
- Add transaction.constants namespace with 40+ translation keys
- Update contant.ts: All exports now use get* prefix (e.g., getCashReceiptPurposeTypeBtnGroup)
- Replace ko/en properties with single name property using t() function

Updated constants:
- getAllTransactionMoidTidOptionsGroup(t)
- getAllTransactionStatusCodeBtnGroup(t)
- getAllTransactionServiceCodeOptionsGroup(t)
- getAllTransactionStatusCode(t)
- getCashReceiptPurposeTypeBtnGroup(t)
- getCashReceiptTransactionTypeBtnGroup(t)
- getCashReceiptProcessResultBtnGroup(t)
- getEscrowSearchTypeOptionsGroup(t)
- getEscrowDeliveryStatusBtnGroup(t)
- getEscrowSettlementStatusBtnGroup(t)
- getBillingSearchTypeOptionsGroup(t)
- getBillingRequestStatusBtnGroup(t)
- getBillingProcessResultBtnGroup(t)
- getBillingPaymentMethodBtnGroup(t)

Updated components (9 files):
- Filter components: all-transaction, cash-receipt, billing, escrow
- List pages: billing, cash-receipt, escrow
- UI components: list-item, important-info-section

All constants now properly support Korean/English language switching.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Jay Sheen
2025-10-30 16:36:30 +09:00
parent e067fc8d4f
commit 29f69c248c
12 changed files with 271 additions and 163 deletions

View File

@@ -9,8 +9,8 @@ import { FilterCalendar } from '@/shared/ui/filter/calendar';
import { FilterButtonGroups } from '@/shared/ui/filter/button-groups';
import { FilterRangeAmount } from '@/shared/ui/filter/range-amount';
import {
AllTransactionMoidTidOptionsGroup,
AllTracsactionStatusCode,
getAllTransactionMoidTidOptionsGroup,
getAllTransactionStatusCode,
} from '@/entities/transaction/model/contant';
import {
AllTransactionFilterProps,
@@ -80,6 +80,9 @@ export const AllTransactionFilter = ({
const [statusCodeBtns, setStatusCodeBtns] = useState<Array<Record<string, string>>>();
const moidTidOptionsGroup = getAllTransactionMoidTidOptionsGroup(t);
const allTransactionStatusCode = getAllTransactionStatusCode(t);
const onClickToClose = () => {
setFilterOn(false);
};
@@ -155,12 +158,12 @@ export const AllTransactionFilter = ({
};
const onChangeServiceCode = (val: string) => {
let list = AllTracsactionStatusCode.filter((value, index) => {
let list = allTransactionStatusCode.filter((value, index) => {
return val === value.serviceCode;
})[0]?.list;
let btns = list?.map((value, index) => {
return {
name: value.ko,
name: value.name,
value: value.code
}
});
@@ -211,7 +214,7 @@ export const AllTransactionFilter = ({
title={t('filter.orderNumberTid')}
selectValue={ filterMoidTidType }
selectSetter={ setFilterMoidTidType }
selectOptions={ AllTransactionMoidTidOptionsGroup }
selectOptions={ moidTidOptionsGroup }
inputValue={ filterMoidTidValue }
inputSetter={ setFilterMoidTidValue }
></FilterSelectInput>

View File

@@ -9,10 +9,10 @@ import { FilterCalendar } from '@/shared/ui/filter/calendar';
import { FilterButtonGroups } from '@/shared/ui/filter/button-groups';
import { FilterRangeAmount } from '@/shared/ui/filter/range-amount';
import {
BillingSearchTypeOptionsGroup,
BillingRequestStatusBtnGroup,
BillingProcessResultBtnGroup,
BillingPaymentMethodBtnGroup
getBillingSearchTypeOptionsGroup,
getBillingRequestStatusBtnGroup,
getBillingProcessResultBtnGroup,
getBillingPaymentMethodBtnGroup
} from '@/entities/transaction/model/contant';
import {
BillingFilterProps,
@@ -68,6 +68,11 @@ export const BillingFilter = ({
const midOptions = useStore.getState().UserStore.selectOptionsMids;
const searchTypeOptionsGroup = getBillingSearchTypeOptionsGroup(t);
const requestStatusBtnGroup = getBillingRequestStatusBtnGroup(t);
const processResultBtnGroup = getBillingProcessResultBtnGroup(t);
const paymentMethodBtnGroup = getBillingPaymentMethodBtnGroup(t);
const onClickToClose = () => {
setFilterOn(false);
};
@@ -131,7 +136,7 @@ export const BillingFilter = ({
title={t('filter.orderNumberTid')}
selectValue={ filterSearchType }
selectSetter={ setFilterSearchType }
selectOptions={ BillingSearchTypeOptionsGroup }
selectOptions={ searchTypeOptionsGroup }
inputValue={ searchKeyword }
inputSetter={ setFilterSearchKeyword }
></FilterSelectInput>
@@ -146,19 +151,19 @@ export const BillingFilter = ({
<FilterButtonGroups
title={t('filter.requestStatus')}
activeValue={ filterRequestStatus }
btnGroups={ BillingRequestStatusBtnGroup }
btnGroups={ requestStatusBtnGroup }
setter={ setFilterRequestStatus }
></FilterButtonGroups>
<FilterButtonGroups
title={t('filter.processingResult')}
activeValue={ filterProcessResult }
btnGroups={ BillingProcessResultBtnGroup }
btnGroups={ processResultBtnGroup }
setter={ setFilterProcessResult }
></FilterButtonGroups>
<FilterButtonGroups
title={t('filter.paymentMethod')}
activeValue={ filterPaymentMethod }
btnGroups={ BillingPaymentMethodBtnGroup }
btnGroups={ paymentMethodBtnGroup }
setter={ setFilterPaymentMethod }
></FilterButtonGroups>

View File

@@ -8,9 +8,9 @@ import { FilterSelectInput } from '@/shared/ui/filter/select-input';
import { FilterCalendar } from '@/shared/ui/filter/calendar';
import { FilterButtonGroups } from '@/shared/ui/filter/button-groups';
import {
CashReceiptPurposeTypeBtnGroup,
CashReceiptTransactionTypeBtnGroup,
CashReceiptProcessResultBtnGroup
getCashReceiptPurposeTypeBtnGroup,
getCashReceiptTransactionTypeBtnGroup,
getCashReceiptProcessResultBtnGroup
} from '@/entities/transaction/model/contant';
import {
CashReceiptFilterProps,
@@ -64,6 +64,10 @@ export const CashReceiptFilter = ({
const midOptions = useStore.getState().UserStore.selectOptionsMids;
const purposeTypeBtnGroup = getCashReceiptPurposeTypeBtnGroup(t);
const transactionTypeBtnGroup = getCashReceiptTransactionTypeBtnGroup(t);
const processResultBtnGroup = getCashReceiptProcessResultBtnGroup(t);
const onClickToClose = () => {
setFilterOn(false);
};
@@ -130,19 +134,19 @@ export const CashReceiptFilter = ({
<FilterButtonGroups
title={t('filter.purpose')}
activeValue={ filterPurposeType }
btnGroups={ CashReceiptPurposeTypeBtnGroup }
btnGroups={ purposeTypeBtnGroup }
setter={ setFilterPurposeType }
></FilterButtonGroups>
<FilterButtonGroups
title={t('filter.transactionCategory')}
activeValue={ filterTransactionType }
btnGroups={ CashReceiptTransactionTypeBtnGroup }
btnGroups={ transactionTypeBtnGroup }
setter={ setFilterTransactionType }
></FilterButtonGroups>
<FilterButtonGroups
title={t('filter.progressStatus')}
activeValue={ filterProcessResult }
btnGroups={ CashReceiptProcessResultBtnGroup }
btnGroups={ processResultBtnGroup }
setter={ setFilterProcessResult }
></FilterButtonGroups>
<FilterSelectInput

View File

@@ -9,9 +9,9 @@ import { FilterCalendar } from '@/shared/ui/filter/calendar';
import { FilterButtonGroups } from '@/shared/ui/filter/button-groups';
import { FilterRangeAmount } from '@/shared/ui/filter/range-amount';
import {
EscrowDeliveryStatusBtnGroup,
EscrowSettlementStatusBtnGroup,
EscrowSearchTypeOptionsGroup
getEscrowDeliveryStatusBtnGroup,
getEscrowSettlementStatusBtnGroup,
getEscrowSearchTypeOptionsGroup
} from '@/entities/transaction/model/contant';
import {
EscrowFilterProps,
@@ -62,7 +62,11 @@ export const EscrowFilter = ({
const [filterMaxAmount, setFilterMaxAmount] = useState<number | undefined>(maxAmount);
const midOptions = useStore.getState().UserStore.selectOptionsMids;
const searchTypeOptionsGroup = getEscrowSearchTypeOptionsGroup(t);
const deliveryStatusBtnGroup = getEscrowDeliveryStatusBtnGroup(t);
const settlementStatusBtnGroup = getEscrowSettlementStatusBtnGroup(t);
const onClickToClose = () => {
setFilterOn(false);
};
@@ -125,7 +129,7 @@ export const EscrowFilter = ({
title={t('filter.orderNumberTid')}
selectValue={ filterSearchType }
selectSetter={ setSearchType }
selectOptions={ EscrowSearchTypeOptionsGroup }
selectOptions={ searchTypeOptionsGroup }
inputValue={ searchKeyword }
inputSetter={ setSearchKeyword }
></FilterSelectInput>
@@ -140,13 +144,13 @@ export const EscrowFilter = ({
<FilterButtonGroups
title={t('filter.deliveryStatus')}
activeValue={ filterDeliveryStatus }
btnGroups={ EscrowDeliveryStatusBtnGroup }
btnGroups={ deliveryStatusBtnGroup }
setter={ setFilterDeliveryStatus }
></FilterButtonGroups>
<FilterButtonGroups
title={t('filter.paymentMethod')}
activeValue={ filterSettlementStatus }
btnGroups={ EscrowSettlementStatusBtnGroup }
btnGroups={ settlementStatusBtnGroup }
setter={ setFilterSettlementStatus }
></FilterButtonGroups>

View File

@@ -4,7 +4,7 @@ import { useNavigate } from '@/shared/lib/hooks/use-navigate';
import { ListItemProps, TransactionCategory } from '../model/types';
import moment from 'moment';
import { useStore } from '@/shared/model/store';
import { AllTracsactionStatusCode } from '../model/contant';
import { getAllTransactionStatusCode } from '../model/contant';
import { useTranslation } from 'react-i18next';
export const ListItem = ({
@@ -129,15 +129,16 @@ export const ListItem = ({
const getStatusName = () => {
let str;
if(transactionCategory === TransactionCategory.AllTransaction){
Loop1:
for(let i=0;i<AllTracsactionStatusCode.length;i++){
if(serviceCode === AllTracsactionStatusCode[i]?.serviceCode){
let list = AllTracsactionStatusCode[i]?.list;
const allTransactionStatusCode = getAllTransactionStatusCode(t);
Loop1:
for(let i=0;i<allTransactionStatusCode.length;i++){
if(serviceCode === allTransactionStatusCode[i]?.serviceCode){
let list = allTransactionStatusCode[i]?.list;
if(!!list){
Loop2:
for(let j=0;j<list.length;j++){
if(list[j]?.code === statusCode){
str = list[j]?.ko;
str = list[j]?.name;
break Loop1;
}
}

View File

@@ -3,7 +3,7 @@ import { useTranslation } from 'react-i18next';
import { NumericFormat } from 'react-number-format';
import { InfoSectionProps, TransactionCategory } from '../../model/types';
import { useStore } from '@/shared/model/store';
import { AllTracsactionStatusCode } from '../../model/contant';
import { getAllTransactionStatusCode } from '../../model/contant';
export const ImportantInfoSection = ({
transactionCategory,
@@ -29,15 +29,16 @@ export const ImportantInfoSection = ({
const getStatusName = (serviceCode: string, statusCode: string) => {
let str;
if(transactionCategory === TransactionCategory.AllTransaction){
Loop1:
for(let i=0;i<AllTracsactionStatusCode.length;i++){
if(serviceCode === AllTracsactionStatusCode[i]?.serviceCode){
let list = AllTracsactionStatusCode[i]?.list;
const allTransactionStatusCode = getAllTransactionStatusCode(t);
Loop1:
for(let i=0;i<allTransactionStatusCode.length;i++){
if(serviceCode === allTransactionStatusCode[i]?.serviceCode){
let list = allTransactionStatusCode[i]?.list;
if(!!list){
Loop2:
for(let j=0;j<list.length;j++){
if(list[j]?.code === statusCode){
str = list[j]?.ko;
str = list[j]?.name;
break Loop1;
}
}