You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Reports.php 8.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <?php
  2. namespace App\Filament\Company\Pages;
  3. use App\Filament\Company\Pages\Reports\AccountBalances;
  4. use App\Filament\Company\Pages\Reports\AccountsPayableAging;
  5. use App\Filament\Company\Pages\Reports\AccountsReceivableAging;
  6. use App\Filament\Company\Pages\Reports\AccountTransactions;
  7. use App\Filament\Company\Pages\Reports\BalanceSheet;
  8. use App\Filament\Company\Pages\Reports\CashFlowStatement;
  9. use App\Filament\Company\Pages\Reports\ClientBalanceSummary;
  10. use App\Filament\Company\Pages\Reports\IncomeStatement;
  11. use App\Filament\Company\Pages\Reports\TrialBalance;
  12. use App\Filament\Company\Pages\Reports\VendorBalanceSummary;
  13. use App\Filament\Infolists\Components\ReportEntry;
  14. use Filament\Infolists\Components\Section;
  15. use Filament\Infolists\Infolist;
  16. use Filament\Navigation\NavigationItem;
  17. use Filament\Pages\Page;
  18. use Filament\Support\Colors\Color;
  19. class Reports extends Page
  20. {
  21. protected static ?string $navigationIcon = 'heroicon-o-document-chart-bar';
  22. protected static string $view = 'filament.company.pages.reports';
  23. public static function getNavigationItems(): array
  24. {
  25. return [
  26. NavigationItem::make(static::getNavigationLabel())
  27. ->group(static::getNavigationGroup())
  28. ->parentItem(static::getNavigationParentItem())
  29. ->icon(static::getNavigationIcon())
  30. ->activeIcon(static::getActiveNavigationIcon())
  31. ->isActiveWhen(fn (): bool => request()->routeIs([
  32. static::getRouteName(),
  33. static::getRouteName() . '.*',
  34. ]))
  35. ->sort(static::getNavigationSort())
  36. ->badge(static::getNavigationBadge(), color: static::getNavigationBadgeColor())
  37. ->badgeTooltip(static::getNavigationBadgeTooltip())
  38. ->url(static::getNavigationUrl()),
  39. ];
  40. }
  41. public function reportsInfolist(Infolist $infolist): Infolist
  42. {
  43. return $infolist
  44. ->state([])
  45. ->schema([
  46. Section::make('Financial Statements')
  47. ->aside()
  48. ->description('Key financial statements that provide an overview of your company’s financial health and performance.')
  49. ->extraAttributes(['class' => 'es-report-card'])
  50. ->schema([
  51. ReportEntry::make('income_statement')
  52. ->hiddenLabel()
  53. ->heading('Income Statement')
  54. ->description('Shows revenue, expenses, and net earnings over a period, indicating overall financial performance.')
  55. ->icon('heroicon-o-chart-bar')
  56. ->iconColor(Color::Purple)
  57. ->url(IncomeStatement::getUrl()),
  58. ReportEntry::make('balance_sheet')
  59. ->hiddenLabel()
  60. ->heading('Balance Sheet')
  61. ->description('Displays your company’s assets, liabilities, and equity at a single point in time, showing overall financial health and stability.')
  62. ->icon('heroicon-o-clipboard-document-list')
  63. ->iconColor(Color::Teal)
  64. ->url(BalanceSheet::getUrl()),
  65. ReportEntry::make('cash_flow_statement')
  66. ->hiddenLabel()
  67. ->heading('Cash Flow Statement')
  68. ->description('Tracks cash inflows and outflows, giving insight into liquidity and cash management over a period.')
  69. ->icon('heroicon-o-document-currency-dollar')
  70. ->iconColor(Color::Cyan)
  71. ->url(CashFlowStatement::getUrl()),
  72. ]),
  73. Section::make('Client Reports')
  74. ->aside()
  75. ->description('Reports that provide detailed information on your company’s client transactions and balances.')
  76. ->extraAttributes(['class' => 'es-report-card'])
  77. ->schema([
  78. ReportEntry::make('ar_aging')
  79. ->hiddenLabel()
  80. ->heading('Accounts Receivable Aging')
  81. ->description('Lists outstanding receivables by client, showing how long invoices have been unpaid.')
  82. ->icon('heroicon-o-calendar-date-range')
  83. ->iconColor(Color::Indigo)
  84. ->url(AccountsReceivableAging::getUrl()),
  85. ReportEntry::make('client_balance_summary')
  86. ->hiddenLabel()
  87. ->heading('Client Balance Summary')
  88. ->description('Shows total invoiced amounts, payments received, and outstanding balances for each client, helping identify top clients and opportunities for growth.')
  89. ->icon('heroicon-o-receipt-percent')
  90. ->iconColor(Color::Emerald)
  91. ->url(ClientBalanceSummary::getUrl()),
  92. ]),
  93. Section::make('Vendor Reports')
  94. ->aside()
  95. ->description('Reports that provide detailed information on your company’s vendor transactions and balances.')
  96. ->extraAttributes(['class' => 'es-report-card'])
  97. ->schema([
  98. ReportEntry::make('ap_aging')
  99. ->hiddenLabel()
  100. ->heading('Accounts Payable Aging')
  101. ->description('Lists outstanding payables by vendor, showing how long invoices have been unpaid.')
  102. ->icon('heroicon-o-clock')
  103. ->iconColor(Color::Rose)
  104. ->url(AccountsPayableAging::getUrl()),
  105. ReportEntry::make('vendor_balance_summary')
  106. ->hiddenLabel()
  107. ->heading('Vendor Balance Summary')
  108. ->description('Shows total billed amounts, payments made, and outstanding balances for each vendor, helping track payment obligations and vendor relationships.')
  109. ->icon('heroicon-o-banknotes')
  110. ->iconColor(Color::Orange)
  111. ->url(VendorBalanceSummary::getUrl()),
  112. ]),
  113. Section::make('Detailed Reports')
  114. ->aside()
  115. ->description('Detailed reports that provide a comprehensive view of your company’s financial transactions and account balances.')
  116. ->extraAttributes(['class' => 'es-report-card'])
  117. ->schema([
  118. ReportEntry::make('account_balances')
  119. ->hiddenLabel()
  120. ->heading('Account Balances')
  121. ->description('Lists all accounts and their balances, including starting, debit, credit, net movement, and ending balances.')
  122. ->icon('heroicon-o-calculator')
  123. ->iconColor(Color::Slate)
  124. ->url(AccountBalances::getUrl()),
  125. ReportEntry::make('trial_balance')
  126. ->hiddenLabel()
  127. ->heading('Trial Balance')
  128. ->description('Summarizes all account debits and credits on a specific date to verify the ledger is balanced.')
  129. ->icon('heroicon-o-scale')
  130. ->iconColor(Color::Sky)
  131. ->url(TrialBalance::getUrl()),
  132. ReportEntry::make('account_transactions')
  133. ->hiddenLabel()
  134. ->heading('Account Transactions')
  135. ->description('A record of all transactions, essential for monitoring and reconciling financial activity in the ledger.')
  136. ->icon('heroicon-o-list-bullet')
  137. ->iconColor(Color::Yellow)
  138. ->url(AccountTransactions::getUrl()),
  139. ]),
  140. ]);
  141. }
  142. }