개요
Folio 도메인은 숙박 시설에서 고객의 계정 및 그룹 단위 청구를 관리하는 시스템입니다. Folio는 예약(Reservation)과 비즈니스 블록(BusinessBlock)을 묶어 통합 청구를 제공하며, 요금제(RatePlan) 및 포함 항목(Inclusion) 스냅샷을 관리합니다.주요 기능
- Folio 생성 및 관리: 고객 계정 또는 그룹 단위 Folio 생성
- 예약 연결: 기존 Folio에 예약 추가
- 비즈니스 블록 연결: 기존 Folio에 비즈니스 블록 추가
- 요금 스냅샷 관리: 적용된 요금제 및 포함 항목 추적
- 청구서 연동: Folio 내 모든 청구서(Bill) 통합 관리
Queries
getFolio
특정 Folio의 상세 정보를 조회합니다.GraphQL Signature
파라미터
조회할 Folio의 고유 식별자
응답
Folio의 고유 식별자 (ULID 형식)
Folio의 고유 코드 (자동 생성)
Folio 이름 (선택사항)
Folio 상태:
ACTIVE: 활성CLOSED: 종료
숙박 시설 ID
계정 프로필 정보
그룹 프로필 정보
Folio에 속한 청구서 목록
적용된 요금제 스냅샷 목록
적용된 포함 항목 스냅샷 목록
연결된 예약 목록
연결된 비즈니스 블록 목록
다른 Folio로 이전된 요금 스냅샷
다른 Folio로 이전된 포함 항목 스냅샷
예제
getFolios
숙박 시설의 Folio 목록을 필터링하여 조회합니다.GraphQL Signature
파라미터
숙박 시설 ID
필터 조건:
name: Folio 이름 검색 (부분 일치)startDate: 생성일 시작 범위endDate: 생성일 종료 범위status: Folio 상태 필터accountProfileIds: 계정 프로필 ID 목록groupProfileIds: 그룹 프로필 ID 목록
정렬 조건 (예:
[{ field: "createdAt", direction: DESC }])페이지당 항목 수 (기본값: 10)
페이지네이션 커서
응답
페이지네이션된 Folio 목록을 반환합니다 (Relay-style Cursor Connection).예제
Mutations
createFolio
새로운 Folio를 생성합니다. Folio는 독립적으로 생성되며, 예약 및 비즈니스 블록은 별도로 추가해야 합니다.GraphQL Signature
파라미터
숙박 시설 ID
계정 프로필 ID (선택사항)
그룹 프로필 ID (선택사항)
Folio 이름 (선택사항)
적용할 요금제 목록:
ratePlanId: 요금제 IDrateId: 요금 IDquantity: 수량startDate: 시작일endDate: 종료일
적용할 포함 항목 목록:
inclusionId: 포함 항목 IDquantity: 수량usageDate: 사용 날짜
응답
생성된 Folio 객체를 반환합니다.예제
Folio 생성 시 요금제와 포함 항목을 지정하면 자동으로 청구서(Bill)가 생성됩니다.
updateFolio
기존 Folio의 정보를 수정합니다.GraphQL Signature
파라미터
수정할 Folio의 ID
변경할 Folio 이름
변경할 Folio 상태 (
ACTIVE | CLOSED)변경할 계정 프로필 ID
변경할 그룹 프로필 ID
응답
수정된 Folio 객체를 반환합니다.예제
deleteFolio
Folio를 삭제합니다.GraphQL Signature
파라미터
삭제할 Folio의 ID
응답
삭제 성공 여부 (true 반환)
예제
addReservationToFolio
기존 Folio에 새로운 예약을 추가합니다.GraphQL Signature
파라미터
예약을 추가할 Folio ID
연결할 비즈니스 블록 ID (선택사항)
예약에 연결할 프로필 ID 목록
체크인 날짜
체크아웃 날짜
객실 타입 ID
적용할 요금제 목록
적용할 포함 항목 목록
즉시 체크인 처리 여부 (기본값: false)
예약 확인 SMS 발송 여부 (기본값: false)
응답
생성된 Reservation 객체를 반환합니다.예제
needCheckIn을 true로 설정하면 예약 생성과 동시에 체크인 처리됩니다.addBusinessBlockToFolio
기존 Folio에 새로운 비즈니스 블록을 추가합니다.GraphQL Signature
파라미터
비즈니스 블록을 추가할 Folio ID
블록 이름
블록 시작 날짜
블록 종료 날짜
객실 타입 ID
예약할 객실 수
응답
생성된 BusinessBlock 객체를 반환합니다.예제
데이터 모델
FolioStatus
Folio의 상태를 나타냅니다.ACTIVE: 활성 상태 (청구 및 예약 가능)CLOSED: 종료 상태 (정산 완료)
FolioRateSnapshot
Folio에 적용된 요금제의 스냅샷입니다. 요금제 변경 시에도 기존 스냅샷은 유지됩니다. 주요 필드:appliedRatePlan: 적용된 요금제 정보 (히스토리)appliedRate: 적용된 요금 정보 (히스토리)totalAmount: 총 요금balanceAmount: 잔액businessBlock: 연결된 비즈니스 블록
FolioInclusionSnapshot
Folio에 적용된 포함 항목의 스냅샷입니다. 주요 필드:appliedInclusion: 적용된 포함 항목 정보 (히스토리)totalAmount: 총 금액balanceAmount: 잔액
에러 처리
DATA_NOT_FOUND_ON_ID
지정한 ID의 Folio를 찾을 수 없습니다.
BUSINESS_BLOCK_FOLIO_MISMATCH
비즈니스 블록이 지정한 Folio에 속하지 않습니다.
REQUIRED_PARAMETER
필수 파라미터가 누락되었습니다.
INVALID_PARAMETER
잘못된 파라미터가 전달되었습니다.
사용 흐름
- Folio 생성:
createFolio로 계정 또는 그룹 단위 Folio 생성 - 예약 추가:
addReservationToFolio로 Folio에 예약 연결 - 비즈니스 블록 추가:
addBusinessBlockToFolio로 단체 블록 연결 - 청구서 확인: Folio에 자동 생성된 청구서 조회
- Folio 종료: 정산 완료 후
updateFolio로 상태를CLOSED로 변경
관련 API
- 예약 관리 API - 예약 생성 및 관리
- 청구서 관리 API - Folio 내 청구서 및 결제
- 프로필 관리 API - 계정 및 그룹 프로필
- 비즈니스 블록 API - 단체 블록 관리