Fix projected revenue trend regression
This commit is contained in:
@@ -246,25 +246,45 @@ const MiniStatCards = ({
|
||||
}, []);
|
||||
|
||||
const calculateRevenueTrend = useCallback(() => {
|
||||
if (!stats?.prevPeriodRevenue && stats?.prevPeriodRevenue !== 0)
|
||||
return null;
|
||||
const currentRevenue =
|
||||
stats.periodProgress < 100 ? stats.projectedRevenue : stats.revenue;
|
||||
const prevRevenue = stats.prevPeriodRevenue;
|
||||
if (!stats?.prevPeriodRevenue && stats?.prevPeriodRevenue !== 0) return null;
|
||||
|
||||
// If period is complete, use actual revenue
|
||||
// If period is incomplete, use smart projection when available, fallback to simple projection
|
||||
const currentRevenue = stats.periodProgress < 100
|
||||
? (projection?.projectedRevenue || stats.projectedRevenue)
|
||||
: stats.revenue;
|
||||
const prevRevenue = stats.prevPeriodRevenue; // Previous period's total revenue
|
||||
|
||||
console.log('[MiniStatCards RevenueTrend Debug]', {
|
||||
periodProgress: stats.periodProgress,
|
||||
currentRevenue,
|
||||
smartProjection: projection?.projectedRevenue,
|
||||
simpleProjection: stats.projectedRevenue,
|
||||
actualRevenue: stats.revenue,
|
||||
prevRevenue,
|
||||
isProjected: stats.periodProgress < 100
|
||||
});
|
||||
|
||||
if (!currentRevenue || !prevRevenue) return null;
|
||||
|
||||
// Calculate absolute difference percentage
|
||||
const trend = currentRevenue >= prevRevenue ? "up" : "down";
|
||||
const diff = Math.abs(currentRevenue - prevRevenue);
|
||||
const percentage = (diff / prevRevenue) * 100;
|
||||
|
||||
console.log('[MiniStatCards RevenueTrend Result]', {
|
||||
trend,
|
||||
percentage,
|
||||
calculation: `(|${currentRevenue} - ${prevRevenue}| / ${prevRevenue}) * 100 = ${percentage}%`
|
||||
});
|
||||
|
||||
return {
|
||||
trend,
|
||||
value: percentage,
|
||||
current: currentRevenue,
|
||||
previous: prevRevenue,
|
||||
};
|
||||
}, [stats]);
|
||||
}, [stats, projection]);
|
||||
|
||||
const calculateOrderTrend = useCallback(() => {
|
||||
if (!stats?.prevPeriodOrders) return null;
|
||||
|
||||
@@ -1476,28 +1476,45 @@ const StatCards = ({
|
||||
}, []);
|
||||
|
||||
const calculateRevenueTrend = useCallback(() => {
|
||||
if (!stats?.prevPeriodRevenue && stats?.prevPeriodRevenue !== 0)
|
||||
return null;
|
||||
if (!stats?.prevPeriodRevenue && stats?.prevPeriodRevenue !== 0) return null;
|
||||
|
||||
// For incomplete periods, compare projected revenue to previous period
|
||||
// For complete periods, compare actual revenue to previous period
|
||||
const currentRevenue =
|
||||
stats.periodProgress < 100 ? stats.projectedRevenue : stats.revenue;
|
||||
const prevRevenue = stats.prevPeriodRevenue;
|
||||
// If period is complete, use actual revenue
|
||||
// If period is incomplete, use smart projection when available, fallback to simple projection
|
||||
const currentRevenue = stats.periodProgress < 100
|
||||
? (projection?.projectedRevenue || stats.projectedRevenue)
|
||||
: stats.revenue;
|
||||
const prevRevenue = stats.prevPeriodRevenue; // Previous period's total revenue
|
||||
|
||||
console.log('[RevenueTrend Debug]', {
|
||||
periodProgress: stats.periodProgress,
|
||||
currentRevenue,
|
||||
smartProjection: projection?.projectedRevenue,
|
||||
simpleProjection: stats.projectedRevenue,
|
||||
actualRevenue: stats.revenue,
|
||||
prevRevenue,
|
||||
isProjected: stats.periodProgress < 100
|
||||
});
|
||||
|
||||
if (!currentRevenue || !prevRevenue) return null;
|
||||
|
||||
// Calculate absolute difference percentage
|
||||
const trend = currentRevenue >= prevRevenue ? "up" : "down";
|
||||
const diff = Math.abs(currentRevenue - prevRevenue);
|
||||
const percentage = (diff / prevRevenue) * 100;
|
||||
|
||||
console.log('[RevenueTrend Result]', {
|
||||
trend,
|
||||
percentage,
|
||||
calculation: `(|${currentRevenue} - ${prevRevenue}| / ${prevRevenue}) * 100 = ${percentage}%`
|
||||
});
|
||||
|
||||
return {
|
||||
trend,
|
||||
value: percentage,
|
||||
current: currentRevenue,
|
||||
previous: prevRevenue,
|
||||
};
|
||||
}, [stats]);
|
||||
}, [stats, projection]);
|
||||
|
||||
const calculateOrderTrend = useCallback(() => {
|
||||
if (!stats?.prevPeriodOrders) return null;
|
||||
|
||||
Reference in New Issue
Block a user