@if (membership(); as currentMembership) {
{{ 'XP.Membership.CurrentScopePlan' | translate: { Default: 'Current management-scope plan' } }}
{{ currentMembership.plan?.name || currentMembership.planId }}
{{ 'XP.Membership.Status' | translate: { Default: 'Status' } }}
{{
'XP.Membership.MemberStatuses.' + currentMembership.status
| translate: { Default: currentMembership.status }
}}
{{ 'XP.Membership.Source' | translate: { Default: 'Source' } }}
{{
'XP.Membership.Sources.' + currentMembership.source | translate: { Default: currentMembership.source }
}}
{{ 'XP.Membership.RenewalMode' | translate: { Default: 'Renewal mode' } }}
{{
'XP.Membership.RenewalModes.' + currentMembership.renewalMode
| translate: { Default: currentMembership.renewalMode }
}}
{{ 'XP.Membership.RemainingPoints' | translate: { Default: 'Remaining points' } }}
@if (isUnlimited()) {
∞
} @else {
{{ remainingPoints() | number: '1.0-2' }}
}
@if (canManagePersonalPoints) {
{{ 'XP.Membership.PersonalPoints' | translate: { Default: 'Personal points' } }}
{{ personalPointsBalance() | number: '1.0-2' }}
}
{{ 'XP.Membership.UsedPoints' | translate: { Default: 'Used points' } }}
@if (isUnlimited()) {
{{ currentMembership.pointsUsed | number: '1.0-2' }} / ∞
} @else {
{{ currentMembership.pointsUsed | number: '1.0-2' }} /
{{ currentMembership.pointsGranted | number: '1.0-2' }}
}
{{ 'XP.Membership.PeriodEnd' | translate: { Default: 'Period end' } }}
{{ currentMembership.currentPeriodEnd | date: 'medium' }}
@if (currentMembership.status === MembershipStatusEnum.Active) {
{{ 'XP.Membership.Pause' | translate: { Default: 'Pause' } }}
}
@if (currentMembership.status === MembershipStatusEnum.Paused) {
{{ 'XP.Membership.Resume' | translate: { Default: 'Resume' } }}
}
@if (currentMembership.status !== MembershipStatusEnum.Expired) {
{{ 'XP.Membership.Revoke' | translate: { Default: 'Revoke' } }}
}
@if (!isExternallyManagedMembership()) {
{{ 'XP.Membership.Renew' | translate: { Default: 'Renew' } }}
}
} @else {
{{
'XP.Membership.NoUserMembership' | translate: { Default: 'No membership has been created for this user yet.' }
}}
}
@if (isTenantScope && scopeMemberships().length) {
{{ 'XP.Membership.MembershipsByScope' | translate: { Default: 'Current plans by scope' } }}
{{
'XP.Membership.MembershipsByScopeHint'
| translate
: {
Default: "View the tenant plan, each organization's current plan, and upcoming periods."
}
}}
@for (scopeMembership of scopeMemberships(); track scopeMembership.id) {
{{ scopeMembershipLabel(scopeMembership) }}
@if (scopeMembership.organizationId) {
{{ 'XP.Membership.OrganizationScope' | translate: { Default: 'Organization membership' } }}
} @else {
{{ 'XP.Membership.TenantScope' | translate: { Default: 'Tenant membership' } }}
}
{{ 'XP.Membership.CurrentPlan' | translate: { Default: 'Current plan' } }}
{{ scopeMembership.plan?.name || scopeMembership.planId }}
@if (isEffectiveInScope(scopeMembership)) {
{{ 'XP.Membership.EffectiveInScope' | translate: { Default: 'Effective in this scope' } }}
}
@if (isCurrentScopeMembership(scopeMembership)) {
{{
'XP.Membership.CurrentManagementScope' | translate: { Default: 'Current management scope' }
}}
}
{{
'XP.Membership.MemberStatuses.' + scopeMembership.status
| translate: { Default: scopeMembership.status }
}}
{{ 'XP.Membership.PeriodEnd' | translate: { Default: 'Period end' } }}
{{ scopeMembership.currentPeriodEnd | date: 'medium' }}
@if (upcomingPeriodsForMembership(scopeMembership.id).length) {
{{ 'XP.Membership.UpcomingPeriods' | translate: { Default: 'Upcoming periods' } }}
{{ upcomingPeriodsForMembership(scopeMembership.id).length }}
@for (period of upcomingPeriodsForMembership(scopeMembership.id); track period.id) {
{{ 'XP.Membership.Plan' | translate: { Default: 'Plan' } }}
{{ period.planSnapshot.name }}
{{ 'XP.Membership.EffectivePeriod' | translate: { Default: 'Effective period' } }}
{{ period.periodStart | date: 'medium' }} – {{ period.periodEnd | date: 'medium' }}
{{ 'XP.Membership.CyclePoints' | translate: { Default: 'Plan cycle points' } }}
@if (period.pointsGranted === null) {
∞
} @else {
{{ period.pointsGranted | number: '1.0-2' }}
}
@if (isExternallyManagedPeriod(period)) {
{{
'XP.Membership.ExternalPeriodManagedHint'
| translate: { Default: 'Refund and cancel in the billing system' }
}}
} @else if (period.organizationId) {
{{
'XP.Membership.ManageInOrganizationScope'
| translate: { Default: 'Switch to the organization scope to manage' }
}}
} @else if (!canCancelPeriod(period)) {
{{
'XP.Membership.CancelLaterPeriodsFirst'
| translate: { Default: 'Cancel later periods first' }
}}
} @else {
{{ 'XP.Membership.CancelPeriod' | translate: { Default: 'Cancel period' } }}
}
}
}
}
}
@if (!isTenantScope && scheduledPeriods().length) {
{{ 'XP.Membership.UpcomingPeriods' | translate: { Default: 'Upcoming periods' } }}
{{
'XP.Membership.UpcomingPeriodsHint'
| translate
: {
Default:
'Renewed periods start after the current period. The current period and its points stay unchanged.'
}
}}
{{ scheduledPeriods().length }}
@for (period of scheduledPeriods(); track period.id) {
{{ 'XP.Membership.Plan' | translate: { Default: 'Plan' } }}
{{ period.planSnapshot.name }}
{{ 'XP.Membership.EffectivePeriod' | translate: { Default: 'Effective period' } }}
{{ period.periodStart | date: 'medium' }} – {{ period.periodEnd | date: 'medium' }}
{{ 'XP.Membership.CyclePoints' | translate: { Default: 'Plan cycle points' } }}
@if (period.pointsGranted === null) {
∞
} @else {
{{ period.pointsGranted | number: '1.0-2' }}
}
@if (isExternallyManagedPeriod(period)) {
{{
'XP.Membership.ExternalPeriodManagedHint'
| translate: { Default: 'Refund and cancel in the billing system' }
}}
} @else if (!canCancelPeriod(period)) {
{{ 'XP.Membership.CancelLaterPeriodsFirst' | translate: { Default: 'Cancel later periods first' } }}
} @else {
{{ 'XP.Membership.CancelPeriod' | translate: { Default: 'Cancel period' } }}
}
}
}
@if (isExternallyManagedMembership()) {
{{
'XP.Membership.ExternallyManagedMembershipHint'
| translate
: {
Default: 'This membership is managed by an external workflow and cannot be replaced or renewed here.'
}
}}
} @else {
}
@if (canManagePersonalPoints) {
}
{{ 'XP.Membership.OperationHistory' | translate: { Default: 'Operation history' } }}
{{
'XP.Membership.OperationHistoryHint'
| translate: { Default: 'Recent assignments, point changes, renewals, and status changes.' }
}}
@for (entry of auditEntries(); track entry.id) {
{{ 'XP.Membership.LedgerSource.' + entry.source | translate: { Default: entry.source } }}
{{ auditScopeLabel(entry) }}
@if (entry.pointsDelta) {
0 ? 'secondary' : 'outline'" zShape="pill">
{{ entry.pointsDelta > 0 ? '+' : '' }}{{ entry.pointsDelta | number: '1.0-2' }}
}
{{ auditReason(entry) }}
{{ 'XP.Membership.Operator' | translate: { Default: 'Operator' } }}
{{ auditActorLabel(entry) }}
{{ 'XP.Membership.OperationTime' | translate: { Default: 'Time' } }}
{{ entry.createdAt | date: 'medium' }}
} @empty {
{{ 'XP.Membership.NoOperationHistory' | translate: { Default: 'No membership operations yet.' } }}
}
}