트랜잭션 관리자: 날짜 및 시간 필드
시간 및 날짜에 대한 트랜잭션 관리자 필드에 대해 알아봅니다.
에서 CPQ날짜와 시간은 계약 또는 구독의 지속 기간, 갱신 기한, 시간 경과에 따른 가격 책정 적용 방식을 결정하는 데 중요합니다.
기간 계산을 지원하거나 이벤트를 감사하기 위해 새로운 날짜 또는 날짜/시간 필드가 도입될 수 있습니다.
기간 계산은 계약 조건, 시작 및 종료 날짜, 갱신, 기간을 계산합니다. 비어 있거나 null 날짜는 조건의 정확성에 영향을 줄 수 있습니다. 시스템 기본값(예: 현재 날짜 또는 오류 플래그)은 누락된 날짜를 처리할 수 있습니다.
감사 이벤트는 견적, 지불 및 계약 서명과 같은 활동을 추적할 수 있습니다. 누락된 날짜는 불완전한 데이터를 의미할 수 있으며 검토를 위해 플래그를 지정해야 합니다.
다음 예는 최종 사용자 UI에 날짜 및 시간 필드가 표시되는 방식을 보여줍니다.
- 날짜 전용 달력 표시:
- 날짜 및 시간 입력:
- 날짜만:
YYYY-MM-DD(예:2024-11-07) - 날짜 및 (선택 사항) 시간:
YYYY-MM-DDTHH:MM:SS(예: 2024-10-22T14:30:00)관리자는 시간 구성요소를 포함할지 여부를 결정할 수 있습니다.
날짜 전용 필드는 시간대에 구애받지 않습니다. 시간대 불일치를 방지하기 위해 날짜와 시간은 협정 세계시(UTC)에 저장됩니다.
새 날짜 및 시간 필드 생성
- 관리자에서 트랜잭션,연결된 필드, + 필드 만들기를 차례로 클릭합니다.
- 대화 상자에서 필드의 이름을 입력합니다. 유형을 날짜/시간으로 설정하고 저장을 클릭합니다.
- 필드를 열고 사용 사례에 따라 액세스를 설정한 후 저장을 클릭합니다.
구매 측 인터페이스에 새 날짜 및 시간 필드 표시
최종 사용자 UI에 표시하려면 필드가 Blueprint의 레이아웃에 포함되어야 합니다. 레이아웃은 JSON 입력 파일에 의해 정의됩니다. 이 파일을 수정하여 최종 사용자 UI를 변경할 수 있습니다.
레이아웃에 "테스트 날짜 문서" 필드를 추가하려면 다음 단계를 수행합니다.
- 관리자에서 트랜잭션, 레이아웃, 스테이지 이름을 차례로 클릭합니다.
- 레이아웃 JSON은 두 곳에서 편집해야 합니다.
필드섹션에서 유형, 레이블 및 variableName 매개변수를 사용하여 새 날짜 필드를 추가합니다. 아래 예에서는 기존 필드 "시작 날짜" 아래에 "테스트 날짜 문서"를 추가합니다. 새 필드에 대한 코드를 작성할 때 변수 이름이 연결된 필드의 변수 이름과 정확히 일치하는지 확인하십시오.주:이 예에서는 날짜만 표시하는 필드를 사용하므로 레이아웃 JSON의 유형은"type":"Date"입니다. 시간도 표시하는 필드를 만들려면 유형이"type":"DateTime"이어야 합니다."layout": "tiers": "columnSets":섹션에서 "elements" 섹션에서 새 필드의 열 순서를 정의합니다. 변수 이름이 정확히 동일한지 확인합니다.
- 저장을 클릭한 다음 배포를 클릭합니다.
- 새 트랜잭션을 생성하고 트랜잭션 편집을 클릭합니다. 새 필드는 다음과 같습니다.
규칙에서 날짜 계산
기간 계산을 통해 계약, 구독 또는 가격 책정 합의의 기간을 결정할 수 있습니다. 때로는 감사 목적으로 데이터를 계산하고 출력을 다른 필드에 표시해야 할 수도 있습니다. 다음 예에서는 구매자 UI에서 사용할 수 있는 시작 날짜와 종료 날짜를 고려하여 날짜 간의 차이를 월과 일 단위로 계산합니다. "구독 기간"이라는 또 다른 필드에 값을 표시합니다.
- 관리자에서 CPQ관련 규칙을 클릭한 다음 새 규칙을 클릭합니다. 규칙의 이름을 입력하고 조건을 정의합니다. 이 예에서는 규칙의 이름을 "구독 기간 날짜 계산"으로 지정하고 조건을 "시작 날짜"로 지정합니다. "종료 날짜"는 null일 수 없습니다.
- 다른 필드의 값을 결정하려면 결정 작업을 추가하고 고급 스크립트 섹션에 스크립트 파일을 제공하십시오. 다음 스크립트 스니펫이 계산을 수행합니다.
// Script calculates the difference between start and end dates in months and days and displays the output in Subscription Term (Months). var yearsDiff = txn.custom.endDate.getFullYear() - txn.custom.startDate.getFullYear(); var monthsDiff = txn.custom.endDate.getMonth() - txn.custom.startDate.getMonth(); var totalMonths = yearsDiff * 12 + monthsDiff; var startDay = txn.custom.startDate.getDate(); var endDay = txn.custom.endDate.getDate(); var daysInMonth = new Date(txn.custom.endDate.getFullYear(), txn.custom.endDate.getMonth() + 1, 0).getDate(); var dayFraction = (endDay - startDay + 1) / daysInMonth; totalMonths += dayFraction; return Math.floor(totalMonths * 1000) / 1000;스크립트 편집기에 스크립트를 입력하고 저장을 클릭합니다.
- 새로 만든 규칙을 Blueprint에 연결합니다. 규칙 그룹으로 이동한 다음 규칙을 적용해야 하는 스테이지의 이름(이 경우 draftStageRuleGroup)으로 이동합니다. 규칙 연결을 클릭하고 규칙 이름을 검색합니다. 규칙을 왼쪽 창으로 끌어간 다음 완료를 클릭하여 배포합니다.
- 시작 날짜와 종료 날짜에 대한 값을 제공하여 구매 측 인터페이스에서 기능을 테스트합니다. 구독 기간은 스크립트에 따라 자동으로 채워집니다.
스크립트에서 날짜 및 시간 필드의 동작
빈 날짜/null 날짜는 다른 빈 값과 비교하지 않는 한 FALSE로 비교됩니다.
date123 = "": 참date123 != "": 아니오
비교 <, <=, >, >=, =, != 가 지원됩니다. 빈 날짜나 null 날짜를 포함하는 비교는 항상 FALSE로 평가됩니다. 지정하지 않는 한 날짜 필드의 기본값은 비어 있습니다(null).
집계 운영:
최대: 최근 날짜 찾기최소: 가장 빠른 날짜 찾기카운트: 비어 있지 않은 날짜 값 수
Sum 및 Avg 는 컴파일 시간 오류를 트리거할 수 있으므로 권장되지 않습니다.