- 회계 모듈 전면 개선: 청구/입금/출금/매입/매출/세금계산서/일반전표/거래처원장 등 - 견적 모듈 금액 포맷/할인/수식/미리보기 등 코드 정리 - 설정 모듈: 계정관리/직급/직책/권한 상세 간소화 - 생산 모듈: 작업지시서/작업자화면/검수 문서 코드 정리 - UniversalListPage 엑셀 다운로드 및 필터 기능 확장 - 대시보드/게시판/수주 등 날짜 유틸 공통화 적용 - claudedocs 문서 인덱스 업데이트 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
32 lines
1.2 KiB
TypeScript
32 lines
1.2 KiB
TypeScript
import type { PaymentApiData, PaymentHistory, PaymentStatus } from './types';
|
|
import { PAYMENT_METHOD_LABELS } from './types';
|
|
import { formatDate } from '@/lib/utils/date';
|
|
|
|
// ===== API → Frontend 변환 =====
|
|
export function transformApiToFrontend(apiData: PaymentApiData): PaymentHistory {
|
|
const subscription = apiData.subscription;
|
|
const plan = subscription?.plan;
|
|
|
|
// 결제 수단 라벨 생성
|
|
const paymentMethodLabel = PAYMENT_METHOD_LABELS[apiData.payment_method] || apiData.payment_method;
|
|
|
|
// 구독 기간
|
|
const periodStart = subscription?.started_at?.split('T')[0] || '';
|
|
const periodEnd = subscription?.ended_at?.split('T')[0] || '';
|
|
|
|
return {
|
|
id: String(apiData.id),
|
|
paymentDate: apiData.paid_at?.split('T')[0] || formatDate(apiData.created_at),
|
|
subscriptionName: plan?.name || '구독',
|
|
paymentMethod: paymentMethodLabel,
|
|
subscriptionPeriod: {
|
|
start: periodStart,
|
|
end: periodEnd,
|
|
},
|
|
amount: typeof apiData.amount === 'string' ? parseFloat(apiData.amount) : apiData.amount,
|
|
status: apiData.status as PaymentStatus,
|
|
canViewInvoice: apiData.status === 'completed',
|
|
createdAt: apiData.created_at,
|
|
updatedAt: apiData.updated_at,
|
|
};
|
|
} |