You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Invoices]: Dashboard widget for Recurring Invoices #127
SMART Plan — [Invoices] Dashboard widget: Recurring Invoice summary
Note: The original body contained implementation instructions for InvoicePlane v1 (CodeIgniter). v2 uses Laravel 11 + Filament v4 — the v2 approach is described below.
Specific
Add a Recurring Invoice Summary Filament widget to the company panel dashboard. The widget shows a compact table with three rows: projected totals for last year, this year, and next year, based on existing RecurringInvoice records scoped to the current company.
Measurable
A "Recurring Invoices" widget appears on the company dashboard.
The widget shows three rows: last year / this year / next year (projected).
Each row shows the total amount for that period, scoped to the current company.
Widget is hidden when no RecurringInvoice records exist.
Achievable
Create Modules/Invoices/Filament/Company/Widgets/RecurringInvoiceSummaryWidget.php extending Filament\Widgets\StatsOverviewWidget or a custom table widget.
The widget queries RecurringInvoice::forCompany() grouped by year.
Register the widget in the company panel provider or via the Invoices module's service provider.
Relevant
Recurring invoices represent predictable revenue. Surfacing a year-over-year summary on the dashboard lets admins spot trends without running a report.
changed the title [-][FEATURE] Dashboard needs RecurringInvoices widget[/-][+][RecurringInvoices]: Dashboard needs RecurringInvoices widget[/+]on Nov 1, 2025
changed the title [-][RecurringInvoices]: Dashboard needs RecurringInvoices widget[/-][+][Invoices]: Dashboard widget for Recurring Invoices[/+]on Jun 13, 2026
Added to support future implementation of this request. The issue body contains a complete SMART Plan.
The issue already specifies a "Recurring Invoice Summary" widget that projects totals for last/current/next year. Beyond the basic AAA test in the body, consider these edge cases:
#[Test]
publicfunctionit_groups_recurring_invoices_by_year_correctly(): void
{
/* Arrange */RecurringInvoice::factory()->for($this->company)->create([
'amount' => 500,
'next_run_at' => now()->subYear()->startOfYear()->addMonths(2),
]);
RecurringInvoice::factory()->for($this->company)->create([
'amount' => 1000,
'next_run_at' => now()->startOfYear()->addMonths(2),
]);
RecurringInvoice::factory()->for($this->company)->create([
'amount' => 750,
'next_run_at' => now()->addYear()->startOfYear()->addMonths(2),
]);
/* Act */$component = Livewire::actingAs($this->user)
->test(RecurringInvoiceSummaryWidget::class, ['tenant' => Str::lower($this->company->search_code)]);
/* Assert */$component->assertSuccessful();
$component->assertSee('500'); // Last year total$component->assertSee('1000'); // This year total$component->assertSee('750'); // Next year total
}
Edge case: What does the widget show if there are recurring invoices with next_run_at dates spread across months within a single year? Does it only count invoices with next_run_at in the year range, or does it also include all-time recurring invoices?
Activity
[-][FEATURE] Dashboard needs RecurringInvoices widget[/-][+][RecurringInvoices]: Dashboard needs RecurringInvoices widget[/+]nielsdrost7 commentedon Jan 2, 2026
@coderabbitai make pull-request with AAA test Scenario's: Arrange, Act, Assert. And also make sure you test edge cases
coderabbitai commentedon Jan 2, 2026
Rate Limit Exceeded
@nielsdrost7 have exceeded the limit for the number of chat messages per hour. Please wait 0 minutes and 9 seconds before sending another message.
[-][RecurringInvoices]: Dashboard needs RecurringInvoices widget[/-][+][Invoices]: Dashboard widget for Recurring Invoices[/+]nielsdrost7 commentedon Jul 24, 2026
Test Suggestions
Added to support future implementation of this request. The issue body contains a complete SMART Plan.
The issue already specifies a "Recurring Invoice Summary" widget that projects totals for last/current/next year. Beyond the basic AAA test in the body, consider these edge cases:
it_hides_the_widget_when_no_recurring_invoices_exist()it_groups_recurring_invoices_by_year_correctly()next_run_atdates spread across months within a single year? Does it only count invoices withnext_run_atin the year range, or does it also include all-time recurring invoices?