File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
import { formatCommonCode, type CommonCode } from '@/lib/domain/common-code';
/**
* 백엔드 `TB_COM_VOUCHER`(`/api/v1/mngr/voc/**`) 한 행. 필드 이름이 화면 용어와 달라
* Repository가 옮긴다 — `frcsNo`=코드, `frcsNm`=가맹점명, `brno`=사업자번호,
* `rprsvNm`=대표자명, `rprsvTelno`=전화번호, `frcsPostAddr`/`frcsDaddr`=주소/상세주소.
*/
export interface Merchant {
id: string;
/** `frcsNo` — 서버가 만든다. 수정 불가(기획 MCH_003_p ①). */
code: string;
/**
* 아래 넷은 백엔드 `TB_COM_VOUCHER`에 컬럼이 없어 **항상 빈 값**이다. 기획 시안에 있는
* 항목이라 화면에서는 지우지 않고 값이 없을 때 `-`로 보여준다(사용자 확정).
*/
brandName: string;
memo: string;
createdAt: string;
updatedAt: string;
name: string;
categoryCode: string;
businessNumber: string;
ownerName: string;
phoneNumber: string;
address: string;
addressDetail: string;
postalCode: string;
latitude: string;
longitude: string;
/** 백엔드 `useYn`. develop 목록엔 없어 `null`(모름)이고 feature/voc부터 온다. */
isVisible: boolean | null;
}
export const EMPTY_FIELD_PLACEHOLDER = '-';
export function formatOptionalValue(
value: string | number | null | undefined
): string {
return value === null || value === undefined || value === ''
? EMPTY_FIELD_PLACEHOLDER
: String(value);
}
/** 업종 이름 — 공통코드 `FRCS_TPBIZ_CD`에서 먼저, 없으면 `FRCS_CD`(4자리)에서 찾고, 그래도 없으면 코드를 그대로 보인다. */
export function formatCategoryLabel(codes: readonly CommonCode[], code: string): string {
if (!code) {
return EMPTY_FIELD_PLACEHOLDER;
}
return formatCommonCode(codes, code);
}
export function formatVisibilityLabel(isVisible: boolean | null): string {
if (isVisible === null) {
return EMPTY_FIELD_PLACEHOLDER;
}
return isVisible ? '노출' : '미노출';
}
/** 목록의 주소 칸 — 상세주소까지 붙이면 한 줄을 넘겨 표가 밀린다. */
export function formatAddressSummary(merchant: Merchant): string {
return formatOptionalValue(merchant.address);
}
/**
* 업종 코드 ↔ 백엔드 필드 — 조회·저장 모두 `FRCS_TPBIZ_CD`(BizPlay 업종코드)다.
* `FRCS_DV_CD`는 가맹점 구분(온라인/일반)이라 업종이 아니다.
*
* 이슈: 목록 검색만 `searchFrcsTpbizCd`를 `FRCS_DV_CD`와 비교한다(보고함).
*/
export const MERCHANT_CATEGORY_READ_FIELD = 'frcsTpbizCd';
export const MERCHANT_CATEGORY_WRITE_FIELD = 'frcsTpbizCd';