+
{{ t('superuser_invoice_distribution.metrics.subscriptions') }}
{{ formatCurrency(summary?.subscriptionAmount || 0) }}
{{ formatPercent(sourceComposition.subscriptionPercent) }} {{ t('superuser_invoice_distribution.metrics.distribution') }}
-
+
+
+ {{ t('superuser_invoice_distribution.metrics.customer_prices') }}
+ {{ formatCurrency(summary?.customerPriceAmount || 0) }}
+ {{ formatPercent(sourceComposition.customerPricePercent) }} {{ t('superuser_invoice_distribution.metrics.distribution') }}
+
+
+
{{ t('superuser_invoice_distribution.metrics.distribution') }}
{{ formatCurrency(summary?.distributionAmount || 0) }}
@@ -582,6 +615,12 @@ onMounted(async () => {
{{ formatCurrency(monthComparison.distributionAmount.target) }} |
{{ formatCurrency(monthComparison.distributionAmount.delta) }} |
+
+ | {{ t('superuser_invoice_distribution.metrics.customer_prices') }} |
+ {{ formatCurrency(monthComparison.customerPriceAmount.base) }} |
+ {{ formatCurrency(monthComparison.customerPriceAmount.target) }} |
+ {{ formatCurrency(monthComparison.customerPriceAmount.delta) }} |
+
@@ -637,6 +676,7 @@ onMounted(async () => {
{{ t('superuser_invoice_distribution.table.department') }} |
{{ t('superuser_invoice_distribution.table.fixed_pricing') }} |
{{ t('superuser_invoice_distribution.table.subscriptions') }} |
+
{{ t('superuser_invoice_distribution.table.customer_prices') }} |
{{ t('superuser_invoice_distribution.table.total') }} |
{{ t('superuser_invoice_distribution.table.share') }} |
{{ t('superuser_invoice_distribution.table.estimated_booked_allocation') }} |
@@ -647,6 +687,7 @@ onMounted(async () => {
{{ row.departmentName }} |
{{ formatCurrency(row.fixedAmount) }} |
{{ formatCurrency(row.subscriptionAmount) }} |
+
{{ formatCurrency(row.customerPriceAmount) }} |
{{ formatCurrency(row.totalAmount) }} |
{{ row.sharePercent }}% |
{{ formatCurrency(row.estimatedBookedAllocation) }} |
@@ -696,6 +737,7 @@ onMounted(async () => {
+
@@ -730,7 +772,8 @@ onMounted(async () => {
{{ t('superuser_invoice_distribution.metrics.fixed_pricing') }}
- {{ t('superuser_invoice_distribution.metrics.subscriptions') }}
+ {{ t('superuser_invoice_distribution.metrics.subscriptions') }}
+ {{ t('superuser_invoice_distribution.metrics.customer_prices') }}
|
{{ formatCurrency(row.amount) }} |
@@ -823,6 +866,11 @@ onMounted(async () => {
{{ t('superuser_invoice_distribution.errors.compare_failed') }}: {{ compareError }}
+
+ {{ t('superuser_invoice_distribution.warnings.legacy_compare_fallback') }}
+ {{ compareFallback.compareFallbackReason }}
+
+
@@ -892,6 +940,10 @@ onMounted(async () => {
{{ t('superuser_invoice_distribution.actions.close') }}
+ -
+ {{ t('superuser_invoice_distribution.compare.status_label') }}: {{ selectedWarningRow.compareStatus }}
+
+ - {{ reason }}
- {{ warning }}
@@ -901,12 +953,240 @@ onMounted(async () => {
diff --git a/src/views/dashboards/superUserDashboard/invoiceDistribution/InvoiceDistributionOverview.vue b/src/views/dashboards/superUserDashboard/invoiceDistribution/InvoiceDistributionOverview.vue
index 86e57eab..e273e05e 100644
--- a/src/views/dashboards/superUserDashboard/invoiceDistribution/InvoiceDistributionOverview.vue
+++ b/src/views/dashboards/superUserDashboard/invoiceDistribution/InvoiceDistributionOverview.vue
@@ -52,6 +52,7 @@ const totals = computed(() => {
acc.distributionAmount += toNumber(summary.distributionAmount);
acc.fixedPricingAmount += toNumber(summary.fixedPricingAmount);
acc.subscriptionAmount += toNumber(summary.subscriptionAmount);
+ acc.customerPriceAmount += toNumber(summary.customerPriceAmount);
acc.totalAmount += toNumber(summary.totalAmount);
return acc;
}, {
@@ -59,11 +60,19 @@ const totals = computed(() => {
distributionAmount: 0,
fixedPricingAmount: 0,
subscriptionAmount: 0,
+ customerPriceAmount: 0,
totalAmount: 0,
});
});
const totalComposition = computed(() => buildSourceComposition(totals.value));
+const monthsUsingLegacyDistribution = computed(() => {
+ return sortedMonthSummaries.value.filter((summary) => summary?.fallback?.usedLegacyDistribution);
+});
+const latestDistributionFallbackReason = computed(() => {
+ const last = monthsUsingLegacyDistribution.value[0];
+ return last?.fallback?.distributionFallbackReason || '';
+});
const topMonths = computed(() => {
return sortMonthSummaries(sortedMonthSummaries.value, 'total', 'desc').slice(0, 3);
@@ -137,10 +146,11 @@ onMounted(() => {
-
- |