Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

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