feat(reports): financial hasData existence flag (service + route)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -14,6 +14,7 @@ import {
|
|||||||
getRecentPayments,
|
getRecentPayments,
|
||||||
getRefundLog,
|
getRefundLog,
|
||||||
getExpenseLedger,
|
getExpenseLedger,
|
||||||
|
financialHasData,
|
||||||
} from '@/lib/services/reports/financial.service';
|
} from '@/lib/services/reports/financial.service';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -65,6 +66,7 @@ export const GET = withAuth(
|
|||||||
recentPayments,
|
recentPayments,
|
||||||
refundLog,
|
refundLog,
|
||||||
expenseLedger,
|
expenseLedger,
|
||||||
|
hasData,
|
||||||
] = await Promise.all([
|
] = await Promise.all([
|
||||||
getFinancialKpis(ctx.portId, range),
|
getFinancialKpis(ctx.portId, range),
|
||||||
getRevenueByMonth(ctx.portId, range),
|
getRevenueByMonth(ctx.portId, range),
|
||||||
@@ -76,6 +78,7 @@ export const GET = withAuth(
|
|||||||
getRecentPayments(ctx.portId, range),
|
getRecentPayments(ctx.portId, range),
|
||||||
getRefundLog(ctx.portId, range),
|
getRefundLog(ctx.portId, range),
|
||||||
getExpenseLedger(ctx.portId, range),
|
getExpenseLedger(ctx.portId, range),
|
||||||
|
financialHasData(ctx.portId),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return NextResponse.json({
|
return NextResponse.json({
|
||||||
@@ -90,6 +93,7 @@ export const GET = withAuth(
|
|||||||
recentPayments,
|
recentPayments,
|
||||||
refundLog,
|
refundLog,
|
||||||
expenseLedger,
|
expenseLedger,
|
||||||
|
hasData,
|
||||||
range: { from: range.from.toISOString(), to: range.to.toISOString() },
|
range: { from: range.from.toISOString(), to: range.to.toISOString() },
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -630,3 +630,23 @@ export async function getExpenseLedger(
|
|||||||
}
|
}
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Window-independent existence check: does this port have any payment OR
|
||||||
|
* expense? Drives the Financial report-level empty state.
|
||||||
|
*/
|
||||||
|
export async function financialHasData(portId: string): Promise<boolean> {
|
||||||
|
const [pay, exp] = await Promise.all([
|
||||||
|
db
|
||||||
|
.select({ one: sql<number>`1` })
|
||||||
|
.from(payments)
|
||||||
|
.where(eq(payments.portId, portId))
|
||||||
|
.limit(1),
|
||||||
|
db
|
||||||
|
.select({ one: sql<number>`1` })
|
||||||
|
.from(expenses)
|
||||||
|
.where(eq(expenses.portId, portId))
|
||||||
|
.limit(1),
|
||||||
|
]);
|
||||||
|
return pay.length > 0 || exp.length > 0;
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user