Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

TrialBalanceReportTest.php 3.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <?php
  2. use App\Factories\ReportDateFactory;
  3. use App\Filament\Company\Pages\Reports\TrialBalance;
  4. use App\Models\Accounting\Transaction;
  5. use App\Utilities\Currency\CurrencyAccessor;
  6. use function Pest\Livewire\livewire;
  7. it('correctly builds a standard trial balance report', function () {
  8. $testCompany = $this->testCompany;
  9. $reportDatesDTO = ReportDateFactory::create($testCompany);
  10. $defaultDateRange = $reportDatesDTO->defaultDateRange;
  11. $defaultEndDate = $reportDatesDTO->defaultEndDate;
  12. $defaultReportType = 'standard';
  13. // Create transactions for the company
  14. Transaction::factory()
  15. ->forDefaultBankAccount()
  16. ->forUncategorizedRevenue()
  17. ->asDeposit(1000)
  18. ->count(10)
  19. ->create();
  20. $expectedBankAccountDebit = 10000;
  21. $expectedBankAccountCredit = 0;
  22. livewire(TrialBalance::class)
  23. ->assertFormSet([
  24. 'deferredFilters.reportType' => $defaultReportType,
  25. 'deferredFilters.dateRange' => $defaultDateRange,
  26. 'deferredFilters.asOfDate' => $defaultEndDate->toDateTimeString(),
  27. ])
  28. ->assertSet('filters', [
  29. 'reportType' => $defaultReportType,
  30. 'dateRange' => $defaultDateRange,
  31. 'asOfDate' => $defaultEndDate->toDateString(),
  32. ])
  33. ->call('applyFilters')
  34. ->assertDontSeeText('Retained Earnings')
  35. ->assertSeeTextInOrder([
  36. 'Cash on Hand',
  37. money($expectedBankAccountDebit, CurrencyAccessor::getDefaultCurrency(), true),
  38. money($expectedBankAccountCredit, CurrencyAccessor::getDefaultCurrency(), true),
  39. ])
  40. ->assertReportTableData();
  41. });
  42. it('correctly builds a post-closing trial balance report', function () {
  43. $testCompany = $this->testCompany;
  44. $reportDatesDTO = ReportDateFactory::create($testCompany);
  45. $defaultDateRange = $reportDatesDTO->defaultDateRange;
  46. $defaultEndDate = $reportDatesDTO->defaultEndDate;
  47. $defaultReportType = 'postClosing';
  48. // Create transactions for the company
  49. $transaction1 = Transaction::factory()
  50. ->forDefaultBankAccount()
  51. ->forUncategorizedRevenue()
  52. ->asDeposit(1000)
  53. ->create();
  54. $transaction2 = Transaction::factory()
  55. ->forDefaultBankAccount()
  56. ->forUncategorizedExpense()
  57. ->asWithdrawal(500)
  58. ->create();
  59. $expectedRetainedEarningsDebit = 0;
  60. $expectedRetainedEarningsCredit = 500;
  61. $defaultCurrencyCode = CurrencyAccessor::getDefaultCurrency();
  62. livewire(TrialBalance::class)
  63. ->set('deferredFilters.reportType', $defaultReportType)
  64. ->call('applyFilters')
  65. ->assertFormSet([
  66. 'deferredFilters.reportType' => $defaultReportType,
  67. 'deferredFilters.dateRange' => $defaultDateRange,
  68. 'deferredFilters.asOfDate' => $defaultEndDate->toDateTimeString(),
  69. ])
  70. ->assertSet('filters', [
  71. 'reportType' => $defaultReportType,
  72. 'dateRange' => $defaultDateRange,
  73. 'asOfDate' => $defaultEndDate->toDateString(),
  74. ])
  75. ->call('applyFilters')
  76. ->assertSeeTextInOrder([
  77. 'RE',
  78. 'Retained Earnings',
  79. money($expectedRetainedEarningsDebit, $defaultCurrencyCode, true),
  80. money($expectedRetainedEarningsCredit, $defaultCurrencyCode, true),
  81. ])
  82. ->assertSeeTextInOrder([
  83. 'Total Revenue',
  84. money(0, $defaultCurrencyCode, true),
  85. money(0, $defaultCurrencyCode, true),
  86. ])
  87. ->assertSeeTextInOrder([
  88. 'Total Expenses',
  89. money(0, $defaultCurrencyCode, true),
  90. money(0, $defaultCurrencyCode, true),
  91. ])
  92. ->assertReportTableData();
  93. });