Andrew Wallo 11ヶ月前
コミット
cc2a3bf14b

+ 19
- 9
app/Collections/Accounting/JournalEntryCollection.php ファイルの表示

@@ -2,9 +2,9 @@
2 2
 
3 3
 namespace App\Collections\Accounting;
4 4
 
5
-use App\Enums\Accounting\JournalEntryType;
6 5
 use App\Models\Accounting\JournalEntry;
7 6
 use App\Utilities\Currency\CurrencyAccessor;
7
+use App\Utilities\Currency\CurrencyConverter;
8 8
 use App\ValueObjects\Money;
9 9
 use Illuminate\Database\Eloquent\Collection;
10 10
 
@@ -12,20 +12,30 @@ class JournalEntryCollection extends Collection
12 12
 {
13 13
     public function sumDebits(): Money
14 14
     {
15
-        $total = $this->where('type', JournalEntryType::Debit)
16
-            ->sum(static function (JournalEntry $item) {
17
-                return $item->rawValue('amount');
18
-            });
15
+        $total = $this->reduce(static function ($carry, JournalEntry $item) {
16
+            if ($item->type->isDebit()) {
17
+                $amountAsInteger = CurrencyConverter::convertToCents($item->amount);
18
+
19
+                return bcadd($carry, $amountAsInteger, 0);
20
+            }
21
+
22
+            return $carry;
23
+        }, 0);
19 24
 
20 25
         return new Money($total, CurrencyAccessor::getDefaultCurrency());
21 26
     }
22 27
 
23 28
     public function sumCredits(): Money
24 29
     {
25
-        $total = $this->where('type', JournalEntryType::Credit)
26
-            ->sum(static function (JournalEntry $item) {
27
-                return $item->rawValue('amount');
28
-            });
30
+        $total = $this->reduce(static function ($carry, JournalEntry $item) {
31
+            if ($item->type->isCredit()) {
32
+                $amountAsInteger = CurrencyConverter::convertToCents($item->amount);
33
+
34
+                return bcadd($carry, $amountAsInteger, 0);
35
+            }
36
+
37
+            return $carry;
38
+        }, 0);
29 39
 
30 40
         return new Money($total, CurrencyAccessor::getDefaultCurrency());
31 41
     }

+ 10
- 0
app/DTO/CashFlowOverviewDTO.php ファイルの表示

@@ -0,0 +1,10 @@
1
+<?php
2
+
3
+namespace App\DTO;
4
+
5
+class CashFlowOverviewDTO
6
+{
7
+    public function __construct(
8
+        public array $categories,
9
+    ) {}
10
+}

+ 1
- 0
app/DTO/ReportDTO.php ファイルの表示

@@ -12,5 +12,6 @@ class ReportDTO
12 12
         public ?AccountBalanceDTO $overallTotal = null,
13 13
         public array $fields = [],
14 14
         public ?string $reportType = null,
15
+        public ?CashFlowOverviewDTO $overview = null,
15 16
     ) {}
16 17
 }

+ 104
- 0
app/Services/AccountService.php ファイルの表示

@@ -182,6 +182,66 @@ class AccountService
182 182
         return $query;
183 183
     }
184 184
 
185
+    public function getCashFlowAccountBalances(string $startDate, string $endDate, array $accountIds = []): Builder
186
+    {
187
+        $accountIds = array_map('intval', $accountIds);
188
+
189
+        $query = Account::query()
190
+            ->select([
191
+                'accounts.id',
192
+                'accounts.name',
193
+                'accounts.category',
194
+                'accounts.type',
195
+                'accounts.subtype_id',
196
+                'accounts.currency_code',
197
+                'accounts.code',
198
+            ])
199
+            ->addSelect([
200
+                DB::raw("
201
+                    COALESCE(
202
+                        IF(accounts.category IN ('asset', 'expense'),
203
+                            SUM(IF(journal_entries.type = 'debit' AND transactions.posted_at < ?, journal_entries.amount, 0)) -
204
+                            SUM(IF(journal_entries.type = 'credit' AND transactions.posted_at < ?, journal_entries.amount, 0)),
205
+                            SUM(IF(journal_entries.type = 'credit' AND transactions.posted_at < ?, journal_entries.amount, 0)) -
206
+                            SUM(IF(journal_entries.type = 'debit' AND transactions.posted_at < ?, journal_entries.amount, 0))
207
+                        ), 0
208
+                    ) AS starting_balance
209
+                "),
210
+                DB::raw("
211
+                    COALESCE(SUM(
212
+                        IF(journal_entries.type = 'debit' AND transactions.posted_at BETWEEN ? AND ?, journal_entries.amount, 0)
213
+                    ), 0) AS total_debit
214
+                "),
215
+                DB::raw("
216
+                    COALESCE(SUM(
217
+                        IF(journal_entries.type = 'credit' AND transactions.posted_at BETWEEN ? AND ?, journal_entries.amount, 0)
218
+                    ), 0) AS total_credit
219
+                "),
220
+            ])
221
+            ->join('journal_entries', 'journal_entries.account_id', '=', 'accounts.id')
222
+            ->join('transactions', function (JoinClause $join) use ($endDate) {
223
+                $join->on('transactions.id', '=', 'journal_entries.transaction_id')
224
+                    ->where('transactions.posted_at', '<=', $endDate);
225
+            })
226
+            ->whereExists(function (\Illuminate\Database\Query\Builder $subQuery) {
227
+                $subQuery->select(DB::raw(1))
228
+                    ->from('journal_entries as je')
229
+                    ->join('accounts as bank_accounts', 'bank_accounts.id', '=', 'je.account_id')
230
+                    ->whereNotNull('bank_accounts.bank_account_id')
231
+                    ->whereColumn('je.transaction_id', 'journal_entries.transaction_id');
232
+            })
233
+            ->groupBy('accounts.id')
234
+            ->with(['subtype:id,name,inverse_cash_flow']);
235
+
236
+        if (! empty($accountIds)) {
237
+            $query->whereIn('accounts.id', $accountIds);
238
+        }
239
+
240
+        $query->addBinding([$startDate, $startDate, $startDate, $startDate, $startDate, $endDate, $startDate, $endDate], 'select');
241
+
242
+        return $query;
243
+    }
244
+
185 245
     public function getTotalBalanceForAllBankAccounts(string $startDate, string $endDate): Money
186 246
     {
187 247
         $accountIds = Account::whereHas('bankAccount')
@@ -224,6 +284,50 @@ class AccountService
224 284
         return new Money($totalBalance, CurrencyAccessor::getDefaultCurrency());
225 285
     }
226 286
 
287
+    public function getStartingBalanceForAllBankAccounts(string $startDate): Money
288
+    {
289
+        $accountIds = Account::whereHas('bankAccount')
290
+            ->pluck('id')
291
+            ->toArray();
292
+
293
+        if (empty($accountIds)) {
294
+            return new Money(0, CurrencyAccessor::getDefaultCurrency());
295
+        }
296
+
297
+        $result = DB::table('journal_entries')
298
+            ->join('transactions', function (JoinClause $join) use ($startDate) {
299
+                $join->on('transactions.id', '=', 'journal_entries.transaction_id')
300
+                    ->where('transactions.posted_at', '<', $startDate);
301
+            })
302
+            ->whereIn('journal_entries.account_id', $accountIds)
303
+            ->selectRaw('
304
+            SUM(CASE
305
+                WHEN transactions.posted_at < ? AND journal_entries.type = "debit" THEN journal_entries.amount
306
+                WHEN transactions.posted_at < ? AND journal_entries.type = "credit" THEN -journal_entries.amount
307
+                ELSE 0
308
+            END) AS totalStartingBalance
309
+        ', [
310
+                $startDate,
311
+                $startDate,
312
+            ])
313
+            ->first();
314
+
315
+        return new Money($result->totalStartingBalance ?? 0, CurrencyAccessor::getDefaultCurrency());
316
+    }
317
+
318
+    public function getBankAccountBalances(string $startDate, string $endDate): Builder | array
319
+    {
320
+        $accountIds = Account::whereHas('bankAccount')
321
+            ->pluck('id')
322
+            ->toArray();
323
+
324
+        if (empty($accountIds)) {
325
+            return [];
326
+        }
327
+
328
+        return $this->getAccountBalances($startDate, $endDate, $accountIds);
329
+    }
330
+
227 331
     public function getEarliestTransactionDate(): string
228 332
     {
229 333
         $earliestDate = Transaction::min('posted_at');

+ 100
- 22
app/Services/ReportService.php ファイルの表示

@@ -7,12 +7,14 @@ use App\DTO\AccountCategoryDTO;
7 7
 use App\DTO\AccountDTO;
8 8
 use App\DTO\AccountTransactionDTO;
9 9
 use App\DTO\AccountTypeDTO;
10
+use App\DTO\CashFlowOverviewDTO;
10 11
 use App\DTO\ReportDTO;
11 12
 use App\Enums\Accounting\AccountCategory;
12 13
 use App\Enums\Accounting\AccountType;
13 14
 use App\Models\Accounting\Account;
14 15
 use App\Support\Column;
15 16
 use App\Utilities\Currency\CurrencyAccessor;
17
+use App\Utilities\Currency\CurrencyConverter;
16 18
 use App\ValueObjects\Money;
17 19
 use Illuminate\Database\Eloquent\Builder;
18 20
 use Illuminate\Support\Carbon;
@@ -441,27 +443,118 @@ class ReportService
441 443
             'Financing Activities' => $this->buildFinancingActivities($startDate, $endDate),
442 444
         ];
443 445
 
444
-        $totalCashFlows = $this->calculateTotalCashFlows($sections);
446
+        $totalCashFlows = $this->calculateTotalCashFlows($sections, $startDate);
445 447
 
446
-        return new ReportDTO($sections, $totalCashFlows, $columns);
448
+        $overview = $this->buildCashFlowOverview($startDate, $endDate);
449
+
450
+        return new ReportDTO(
451
+            categories: $sections,
452
+            overallTotal: $totalCashFlows,
453
+            fields: $columns,
454
+            overview: $overview
455
+        );
456
+    }
457
+
458
+    private function calculateTotalCashFlows(array $sections, string $startDate): AccountBalanceDTO
459
+    {
460
+        $totalInflow = 0;
461
+        $totalOutflow = 0;
462
+        $startingBalance = $this->accountService->getStartingBalanceForAllBankAccounts($startDate)->getAmount();
463
+
464
+        foreach ($sections as $section) {
465
+            $netMovement = $section->summary->netMovement ?? 0;
466
+
467
+            $numericNetMovement = CurrencyConverter::convertToCents($netMovement);
468
+
469
+            if ($numericNetMovement > 0) {
470
+                $totalInflow += $numericNetMovement;
471
+            } else {
472
+                $totalOutflow += $numericNetMovement;
473
+            }
474
+        }
475
+
476
+        $netCashChange = $totalInflow + $totalOutflow;
477
+        $endingBalance = $startingBalance + $netCashChange;
478
+
479
+        return $this->formatBalances([
480
+            'starting_balance' => $startingBalance,
481
+            'debit_balance' => $totalInflow,
482
+            'credit_balance' => abs($totalOutflow),
483
+            'net_movement' => $netCashChange,
484
+            'ending_balance' => $endingBalance,
485
+        ]);
486
+    }
487
+
488
+    private function buildCashFlowOverview(string $startDate, string $endDate): CashFlowOverviewDTO
489
+    {
490
+        $accounts = $this->accountService->getBankAccountBalances($startDate, $endDate)->get();
491
+
492
+        $startingBalanceAccounts = [];
493
+        $endingBalanceAccounts = [];
494
+
495
+        $startingBalanceTotal = 0;
496
+        $endingBalanceTotal = 0;
497
+
498
+        foreach ($accounts as $account) {
499
+            $accountBalances = $this->calculateAccountBalances($account);
500
+
501
+            $startingBalanceTotal += $accountBalances['starting_balance'];
502
+            $endingBalanceTotal += $accountBalances['ending_balance'];
503
+
504
+            $startingBalanceAccounts[] = new AccountDTO(
505
+                accountName: $account->name,
506
+                accountCode: $account->code,
507
+                accountId: $account->id,
508
+                balance: $this->formatBalances(['starting_balance' => $accountBalances['starting_balance']]),
509
+                startDate: $startDate,
510
+                endDate: $endDate,
511
+            );
512
+
513
+            $endingBalanceAccounts[] = new AccountDTO(
514
+                accountName: $account->name,
515
+                accountCode: $account->code,
516
+                accountId: $account->id,
517
+                balance: $this->formatBalances(['ending_balance' => $accountBalances['ending_balance']]),
518
+                startDate: $startDate,
519
+                endDate: $endDate,
520
+            );
521
+        }
522
+
523
+        $startingBalanceSummary = $this->formatBalances(['starting_balance' => $startingBalanceTotal]);
524
+        $endingBalanceSummary = $this->formatBalances(['ending_balance' => $endingBalanceTotal]);
525
+
526
+        $overviewCategories = [
527
+            'Starting Balance' => new AccountCategoryDTO(
528
+                accounts: $startingBalanceAccounts,
529
+                summary: $startingBalanceSummary,
530
+            ),
531
+            'Ending Balance' => new AccountCategoryDTO(
532
+                accounts: $endingBalanceAccounts,
533
+                summary: $endingBalanceSummary,
534
+            ),
535
+        ];
536
+
537
+        return new CashFlowOverviewDTO($overviewCategories);
447 538
     }
448 539
 
449 540
     private function buildOperatingActivities(string $startDate, string $endDate): AccountCategoryDTO
450 541
     {
451
-        $accounts = $this->accountService->getAccountBalances($startDate, $endDate)
542
+        $accounts = $this->accountService->getCashFlowAccountBalances($startDate, $endDate)
452 543
             ->whereIn('accounts.type', [
453 544
                 AccountType::OperatingRevenue,
454 545
                 AccountType::UncategorizedRevenue,
546
+                AccountType::ContraRevenue,
455 547
                 AccountType::OperatingExpense,
456 548
                 AccountType::NonOperatingExpense,
457 549
                 AccountType::UncategorizedExpense,
550
+                AccountType::ContraExpense,
458 551
                 AccountType::CurrentAsset,
459 552
             ])
460 553
             ->whereRelation('subtype', 'name', '!=', 'Cash and Cash Equivalents')
461 554
             ->orderByRaw('LENGTH(code), code')
462 555
             ->get();
463 556
 
464
-        $adjustments = $this->accountService->getAccountBalances($startDate, $endDate)
557
+        $adjustments = $this->accountService->getCashFlowAccountBalances($startDate, $endDate)
465 558
             ->whereIn('accounts.type', [
466 559
                 AccountType::ContraAsset,
467 560
                 AccountType::CurrentLiability,
@@ -475,12 +568,12 @@ class ReportService
475 568
 
476 569
     private function buildInvestingActivities(string $startDate, string $endDate): AccountCategoryDTO
477 570
     {
478
-        $accounts = $this->accountService->getAccountBalances($startDate, $endDate)
571
+        $accounts = $this->accountService->getCashFlowAccountBalances($startDate, $endDate)
479 572
             ->whereIn('accounts.type', [AccountType::NonCurrentAsset])
480 573
             ->orderByRaw('LENGTH(code), code')
481 574
             ->get();
482 575
 
483
-        $adjustments = $this->accountService->getAccountBalances($startDate, $endDate)
576
+        $adjustments = $this->accountService->getCashFlowAccountBalances($startDate, $endDate)
484 577
             ->whereIn('accounts.type', [AccountType::NonOperatingRevenue])
485 578
             ->orderByRaw('LENGTH(code), code')
486 579
             ->get();
@@ -490,7 +583,7 @@ class ReportService
490 583
 
491 584
     private function buildFinancingActivities(string $startDate, string $endDate): AccountCategoryDTO
492 585
     {
493
-        $accounts = $this->accountService->getAccountBalances($startDate, $endDate)
586
+        $accounts = $this->accountService->getCashFlowAccountBalances($startDate, $endDate)
494 587
             ->where(function (Builder $query) {
495 588
                 $query->whereIn('accounts.type', [
496 589
                     AccountType::Equity,
@@ -565,21 +658,6 @@ class ReportService
565 658
         );
566 659
     }
567 660
 
568
-    private function calculateTotalCashFlows(array $sections): AccountBalanceDTO
569
-    {
570
-        $totalCashFlow = 0;
571
-
572
-        foreach ($sections as $section) {
573
-            $netMovement = $section->summary->netMovement ?? 0;
574
-
575
-            $numericNetMovement = money($netMovement, CurrencyAccessor::getDefaultCurrency(), true)->getAmount();
576
-
577
-            $totalCashFlow += $numericNetMovement;
578
-        }
579
-
580
-        return $this->formatBalances(['net_movement' => $totalCashFlow]);
581
-    }
582
-
583 661
     public function buildBalanceSheetReport(string $asOfDate, array $columns = []): ReportDTO
584 662
     {
585 663
         $asOfDateCarbon = Carbon::parse($asOfDate);

+ 54
- 49
app/Transformers/CashFlowStatementReportTransformer.php ファイルの表示

@@ -4,61 +4,15 @@ namespace App\Transformers;
4 4
 
5 5
 use App\DTO\AccountDTO;
6 6
 use App\DTO\ReportCategoryDTO;
7
-use App\DTO\ReportDTO;
8 7
 use App\DTO\ReportTypeDTO;
9
-use App\Utilities\Currency\CurrencyConverter;
10 8
 
11 9
 class CashFlowStatementReportTransformer extends SummaryReportTransformer
12 10
 {
13
-    protected string $totalOperatingActivities;
14
-
15
-    protected string $totalInvestingActivities;
16
-
17
-    protected string $totalFinancingActivities;
18
-
19
-    protected string $grossCashInflow;
20
-
21
-    protected string $grossCashOutflow;
22
-
23
-    public function __construct(ReportDTO $report)
24
-    {
25
-        parent::__construct($report);
26
-
27
-        $this->calculateTotals();
28
-    }
29
-
30 11
     public function getTitle(): string
31 12
     {
32 13
         return 'Cash Flow Statement';
33 14
     }
34 15
 
35
-    public function calculateTotals(): void
36
-    {
37
-        $cashInflow = 0;
38
-        $cashOutflow = 0;
39
-
40
-        foreach ($this->report->categories as $categoryName => $category) {
41
-            $netMovement = CurrencyConverter::convertToCents($category->summary->netMovement);
42
-
43
-            match ($categoryName) {
44
-                'Operating Activities' => $this->totalOperatingActivities = $netMovement,
45
-                'Investing Activities' => $this->totalInvestingActivities = $netMovement,
46
-                'Financing Activities' => $this->totalFinancingActivities = $netMovement,
47
-            };
48
-
49
-            // Sum inflows and outflows separately
50
-            if ($netMovement > 0) {
51
-                $cashInflow += $netMovement;
52
-            } else {
53
-                $cashOutflow += $netMovement;
54
-            }
55
-        }
56
-
57
-        // Store gross totals
58
-        $this->grossCashInflow = CurrencyConverter::formatCentsToMoney($cashInflow);
59
-        $this->grossCashOutflow = CurrencyConverter::formatCentsToMoney(abs($cashOutflow));
60
-    }
61
-
62 16
     public function getCategories(): array
63 17
     {
64 18
         $categories = [];
@@ -232,16 +186,67 @@ class CashFlowStatementReportTransformer extends SummaryReportTransformer
232 186
         return [
233 187
             [
234 188
                 'label' => 'Gross Cash Inflow',
235
-                'value' => $this->grossCashInflow,
189
+                'value' => $this->report->overallTotal->debitBalance ?? '',
236 190
             ],
237 191
             [
238 192
                 'label' => 'Gross Cash Outflow',
239
-                'value' => $this->grossCashOutflow,
193
+                'value' => $this->report->overallTotal->creditBalance ?? '',
240 194
             ],
241 195
             [
242
-                'label' => 'Net Cash Flow',
196
+                'label' => 'Net Cash Change',
243 197
                 'value' => $this->report->overallTotal->netMovement ?? '',
244 198
             ],
245 199
         ];
246 200
     }
201
+
202
+    public function getOverview(): array
203
+    {
204
+        $categories = [];
205
+
206
+        foreach ($this->report->overview->categories as $categoryName => $category) {
207
+            $header = [];
208
+
209
+            foreach ($this->getColumns() as $column) {
210
+                $header[$column->getName()] = $column->getName() === 'account_name' ? $categoryName : '';
211
+            }
212
+
213
+            $data = array_map(function (AccountDTO $account) {
214
+                $row = [];
215
+
216
+                foreach ($this->getColumns() as $column) {
217
+                    $row[$column->getName()] = match ($column->getName()) {
218
+                        'account_code' => $account->accountCode,
219
+                        'account_name' => [
220
+                            'name' => $account->accountName,
221
+                            'id' => $account->accountId ?? null,
222
+                            'start_date' => $account->startDate,
223
+                            'end_date' => $account->endDate,
224
+                        ],
225
+                        'net_movement' => $account->balance->startingBalance ?? $account->balance->endingBalance ?? '',
226
+                        default => '',
227
+                    };
228
+                }
229
+
230
+                return $row;
231
+            }, $category->accounts);
232
+
233
+            $summary = [];
234
+
235
+            foreach ($this->getColumns() as $column) {
236
+                $summary[$column->getName()] = match ($column->getName()) {
237
+                    'account_name' => 'Total ' . $categoryName,
238
+                    'net_movement' => $category->summary->startingBalance ?? $category->summary->endingBalance ?? '',
239
+                    default => '',
240
+                };
241
+            }
242
+
243
+            $categories[] = new ReportCategoryDTO(
244
+                header: $header,
245
+                data: $data,
246
+                summary: $summary,
247
+            );
248
+        }
249
+
250
+        return $categories;
251
+    }
247 252
 }

+ 113
- 113
composer.lock ファイルの表示

@@ -497,16 +497,16 @@
497 497
         },
498 498
         {
499 499
             "name": "aws/aws-sdk-php",
500
-            "version": "3.325.2",
500
+            "version": "3.325.5",
501 501
             "source": {
502 502
                 "type": "git",
503 503
                 "url": "https://github.com/aws/aws-sdk-php.git",
504
-                "reference": "9e354a5e0cd1d563ec85245e3000e98e16a44fce"
504
+                "reference": "195d003c902a741de53008c839cbcebddbe1f326"
505 505
             },
506 506
             "dist": {
507 507
                 "type": "zip",
508
-                "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/9e354a5e0cd1d563ec85245e3000e98e16a44fce",
509
-                "reference": "9e354a5e0cd1d563ec85245e3000e98e16a44fce",
508
+                "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/195d003c902a741de53008c839cbcebddbe1f326",
509
+                "reference": "195d003c902a741de53008c839cbcebddbe1f326",
510 510
                 "shasum": ""
511 511
             },
512 512
             "require": {
@@ -589,9 +589,9 @@
589 589
             "support": {
590 590
                 "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80",
591 591
                 "issues": "https://github.com/aws/aws-sdk-php/issues",
592
-                "source": "https://github.com/aws/aws-sdk-php/tree/3.325.2"
592
+                "source": "https://github.com/aws/aws-sdk-php/tree/3.325.5"
593 593
             },
594
-            "time": "2024-11-01T18:08:38+00:00"
594
+            "time": "2024-11-08T19:12:57+00:00"
595 595
         },
596 596
         {
597 597
             "name": "aws/aws-sdk-php-laravel",
@@ -1664,16 +1664,16 @@
1664 1664
         },
1665 1665
         {
1666 1666
             "name": "filament/actions",
1667
-            "version": "v3.2.122",
1667
+            "version": "v3.2.123",
1668 1668
             "source": {
1669 1669
                 "type": "git",
1670 1670
                 "url": "https://github.com/filamentphp/actions.git",
1671
-                "reference": "3badf1a1589bf70fdc625130f6dfc1ca2146a32f"
1671
+                "reference": "de0a2c9d453ceb6546b1a804a8240d0b8367b1ce"
1672 1672
             },
1673 1673
             "dist": {
1674 1674
                 "type": "zip",
1675
-                "url": "https://api.github.com/repos/filamentphp/actions/zipball/3badf1a1589bf70fdc625130f6dfc1ca2146a32f",
1676
-                "reference": "3badf1a1589bf70fdc625130f6dfc1ca2146a32f",
1675
+                "url": "https://api.github.com/repos/filamentphp/actions/zipball/de0a2c9d453ceb6546b1a804a8240d0b8367b1ce",
1676
+                "reference": "de0a2c9d453ceb6546b1a804a8240d0b8367b1ce",
1677 1677
                 "shasum": ""
1678 1678
             },
1679 1679
             "require": {
@@ -1713,20 +1713,20 @@
1713 1713
                 "issues": "https://github.com/filamentphp/filament/issues",
1714 1714
                 "source": "https://github.com/filamentphp/filament"
1715 1715
             },
1716
-            "time": "2024-10-31T13:38:12+00:00"
1716
+            "time": "2024-11-06T08:50:46+00:00"
1717 1717
         },
1718 1718
         {
1719 1719
             "name": "filament/filament",
1720
-            "version": "v3.2.122",
1720
+            "version": "v3.2.123",
1721 1721
             "source": {
1722 1722
                 "type": "git",
1723 1723
                 "url": "https://github.com/filamentphp/panels.git",
1724
-                "reference": "076f5367a3dfe5f6864d117f6826ca7821586931"
1724
+                "reference": "5c4bf4225106e5d2a1348de4e717a1ef8432b332"
1725 1725
             },
1726 1726
             "dist": {
1727 1727
                 "type": "zip",
1728
-                "url": "https://api.github.com/repos/filamentphp/panels/zipball/076f5367a3dfe5f6864d117f6826ca7821586931",
1729
-                "reference": "076f5367a3dfe5f6864d117f6826ca7821586931",
1728
+                "url": "https://api.github.com/repos/filamentphp/panels/zipball/5c4bf4225106e5d2a1348de4e717a1ef8432b332",
1729
+                "reference": "5c4bf4225106e5d2a1348de4e717a1ef8432b332",
1730 1730
                 "shasum": ""
1731 1731
             },
1732 1732
             "require": {
@@ -1778,20 +1778,20 @@
1778 1778
                 "issues": "https://github.com/filamentphp/filament/issues",
1779 1779
                 "source": "https://github.com/filamentphp/filament"
1780 1780
             },
1781
-            "time": "2024-10-31T13:38:14+00:00"
1781
+            "time": "2024-11-06T08:50:55+00:00"
1782 1782
         },
1783 1783
         {
1784 1784
             "name": "filament/forms",
1785
-            "version": "v3.2.122",
1785
+            "version": "v3.2.123",
1786 1786
             "source": {
1787 1787
                 "type": "git",
1788 1788
                 "url": "https://github.com/filamentphp/forms.git",
1789
-                "reference": "c863b5765b871485a2c624c43a0eb6e957a04b54"
1789
+                "reference": "f75386dc6f3c41fd3178265a71806f1ed4be0478"
1790 1790
             },
1791 1791
             "dist": {
1792 1792
                 "type": "zip",
1793
-                "url": "https://api.github.com/repos/filamentphp/forms/zipball/c863b5765b871485a2c624c43a0eb6e957a04b54",
1794
-                "reference": "c863b5765b871485a2c624c43a0eb6e957a04b54",
1793
+                "url": "https://api.github.com/repos/filamentphp/forms/zipball/f75386dc6f3c41fd3178265a71806f1ed4be0478",
1794
+                "reference": "f75386dc6f3c41fd3178265a71806f1ed4be0478",
1795 1795
                 "shasum": ""
1796 1796
             },
1797 1797
             "require": {
@@ -1834,11 +1834,11 @@
1834 1834
                 "issues": "https://github.com/filamentphp/filament/issues",
1835 1835
                 "source": "https://github.com/filamentphp/filament"
1836 1836
             },
1837
-            "time": "2024-10-31T13:38:16+00:00"
1837
+            "time": "2024-11-06T08:50:57+00:00"
1838 1838
         },
1839 1839
         {
1840 1840
             "name": "filament/infolists",
1841
-            "version": "v3.2.122",
1841
+            "version": "v3.2.123",
1842 1842
             "source": {
1843 1843
                 "type": "git",
1844 1844
                 "url": "https://github.com/filamentphp/infolists.git",
@@ -1889,7 +1889,7 @@
1889 1889
         },
1890 1890
         {
1891 1891
             "name": "filament/notifications",
1892
-            "version": "v3.2.122",
1892
+            "version": "v3.2.123",
1893 1893
             "source": {
1894 1894
                 "type": "git",
1895 1895
                 "url": "https://github.com/filamentphp/notifications.git",
@@ -1941,7 +1941,7 @@
1941 1941
         },
1942 1942
         {
1943 1943
             "name": "filament/support",
1944
-            "version": "v3.2.122",
1944
+            "version": "v3.2.123",
1945 1945
             "source": {
1946 1946
                 "type": "git",
1947 1947
                 "url": "https://github.com/filamentphp/support.git",
@@ -2000,16 +2000,16 @@
2000 2000
         },
2001 2001
         {
2002 2002
             "name": "filament/tables",
2003
-            "version": "v3.2.122",
2003
+            "version": "v3.2.123",
2004 2004
             "source": {
2005 2005
                 "type": "git",
2006 2006
                 "url": "https://github.com/filamentphp/tables.git",
2007
-                "reference": "56a852f7992a01ad8d7b85034cdbb2ae8a21086a"
2007
+                "reference": "d066eed11528f1928a76cbe9075c54ddfe26fd1e"
2008 2008
             },
2009 2009
             "dist": {
2010 2010
                 "type": "zip",
2011
-                "url": "https://api.github.com/repos/filamentphp/tables/zipball/56a852f7992a01ad8d7b85034cdbb2ae8a21086a",
2012
-                "reference": "56a852f7992a01ad8d7b85034cdbb2ae8a21086a",
2011
+                "url": "https://api.github.com/repos/filamentphp/tables/zipball/d066eed11528f1928a76cbe9075c54ddfe26fd1e",
2012
+                "reference": "d066eed11528f1928a76cbe9075c54ddfe26fd1e",
2013 2013
                 "shasum": ""
2014 2014
             },
2015 2015
             "require": {
@@ -2048,11 +2048,11 @@
2048 2048
                 "issues": "https://github.com/filamentphp/filament/issues",
2049 2049
                 "source": "https://github.com/filamentphp/filament"
2050 2050
             },
2051
-            "time": "2024-10-31T13:38:27+00:00"
2051
+            "time": "2024-11-06T08:51:06+00:00"
2052 2052
         },
2053 2053
         {
2054 2054
             "name": "filament/widgets",
2055
-            "version": "v3.2.122",
2055
+            "version": "v3.2.123",
2056 2056
             "source": {
2057 2057
                 "type": "git",
2058 2058
                 "url": "https://github.com/filamentphp/widgets.git",
@@ -4585,16 +4585,16 @@
4585 4585
         },
4586 4586
         {
4587 4587
             "name": "nesbot/carbon",
4588
-            "version": "3.8.1",
4588
+            "version": "3.8.2",
4589 4589
             "source": {
4590 4590
                 "type": "git",
4591 4591
                 "url": "https://github.com/briannesbitt/Carbon.git",
4592
-                "reference": "10ac0aa86b8062219ce21e8189123d611ca3ecd9"
4592
+                "reference": "e1268cdbc486d97ce23fef2c666dc3c6b6de9947"
4593 4593
             },
4594 4594
             "dist": {
4595 4595
                 "type": "zip",
4596
-                "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/10ac0aa86b8062219ce21e8189123d611ca3ecd9",
4597
-                "reference": "10ac0aa86b8062219ce21e8189123d611ca3ecd9",
4596
+                "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/e1268cdbc486d97ce23fef2c666dc3c6b6de9947",
4597
+                "reference": "e1268cdbc486d97ce23fef2c666dc3c6b6de9947",
4598 4598
                 "shasum": ""
4599 4599
             },
4600 4600
             "require": {
@@ -4687,7 +4687,7 @@
4687 4687
                     "type": "tidelift"
4688 4688
                 }
4689 4689
             ],
4690
-            "time": "2024-11-03T16:02:24+00:00"
4690
+            "time": "2024-11-07T17:46:48+00:00"
4691 4691
         },
4692 4692
         {
4693 4693
             "name": "nette/schema",
@@ -6583,16 +6583,16 @@
6583 6583
         },
6584 6584
         {
6585 6585
             "name": "symfony/console",
6586
-            "version": "v7.1.6",
6586
+            "version": "v7.1.7",
6587 6587
             "source": {
6588 6588
                 "type": "git",
6589 6589
                 "url": "https://github.com/symfony/console.git",
6590
-                "reference": "bb5192af6edc797cbab5c8e8ecfea2fe5f421e57"
6590
+                "reference": "3284aafcac338b6e86fd955ee4d794cbe434151a"
6591 6591
             },
6592 6592
             "dist": {
6593 6593
                 "type": "zip",
6594
-                "url": "https://api.github.com/repos/symfony/console/zipball/bb5192af6edc797cbab5c8e8ecfea2fe5f421e57",
6595
-                "reference": "bb5192af6edc797cbab5c8e8ecfea2fe5f421e57",
6594
+                "url": "https://api.github.com/repos/symfony/console/zipball/3284aafcac338b6e86fd955ee4d794cbe434151a",
6595
+                "reference": "3284aafcac338b6e86fd955ee4d794cbe434151a",
6596 6596
                 "shasum": ""
6597 6597
             },
6598 6598
             "require": {
@@ -6656,7 +6656,7 @@
6656 6656
                 "terminal"
6657 6657
             ],
6658 6658
             "support": {
6659
-                "source": "https://github.com/symfony/console/tree/v7.1.6"
6659
+                "source": "https://github.com/symfony/console/tree/v7.1.7"
6660 6660
             },
6661 6661
             "funding": [
6662 6662
                 {
@@ -6672,7 +6672,7 @@
6672 6672
                     "type": "tidelift"
6673 6673
                 }
6674 6674
             ],
6675
-            "time": "2024-10-09T08:46:59+00:00"
6675
+            "time": "2024-11-05T15:34:55+00:00"
6676 6676
         },
6677 6677
         {
6678 6678
             "name": "symfony/css-selector",
@@ -6808,16 +6808,16 @@
6808 6808
         },
6809 6809
         {
6810 6810
             "name": "symfony/error-handler",
6811
-            "version": "v7.1.6",
6811
+            "version": "v7.1.7",
6812 6812
             "source": {
6813 6813
                 "type": "git",
6814 6814
                 "url": "https://github.com/symfony/error-handler.git",
6815
-                "reference": "d60117093c2a9fe667baa8fedf84e8a09b9c592f"
6815
+                "reference": "010e44661f4c6babaf8c4862fe68c24a53903342"
6816 6816
             },
6817 6817
             "dist": {
6818 6818
                 "type": "zip",
6819
-                "url": "https://api.github.com/repos/symfony/error-handler/zipball/d60117093c2a9fe667baa8fedf84e8a09b9c592f",
6820
-                "reference": "d60117093c2a9fe667baa8fedf84e8a09b9c592f",
6819
+                "url": "https://api.github.com/repos/symfony/error-handler/zipball/010e44661f4c6babaf8c4862fe68c24a53903342",
6820
+                "reference": "010e44661f4c6babaf8c4862fe68c24a53903342",
6821 6821
                 "shasum": ""
6822 6822
             },
6823 6823
             "require": {
@@ -6863,7 +6863,7 @@
6863 6863
             "description": "Provides tools to manage errors and ease debugging PHP code",
6864 6864
             "homepage": "https://symfony.com",
6865 6865
             "support": {
6866
-                "source": "https://github.com/symfony/error-handler/tree/v7.1.6"
6866
+                "source": "https://github.com/symfony/error-handler/tree/v7.1.7"
6867 6867
             },
6868 6868
             "funding": [
6869 6869
                 {
@@ -6879,7 +6879,7 @@
6879 6879
                     "type": "tidelift"
6880 6880
                 }
6881 6881
             ],
6882
-            "time": "2024-09-25T14:20:29+00:00"
6882
+            "time": "2024-11-05T15:34:55+00:00"
6883 6883
         },
6884 6884
         {
6885 6885
             "name": "symfony/event-dispatcher",
@@ -7172,16 +7172,16 @@
7172 7172
         },
7173 7173
         {
7174 7174
             "name": "symfony/http-foundation",
7175
-            "version": "v7.1.6",
7175
+            "version": "v7.1.7",
7176 7176
             "source": {
7177 7177
                 "type": "git",
7178 7178
                 "url": "https://github.com/symfony/http-foundation.git",
7179
-                "reference": "3d7bbf071b25f802f7d55524d408bed414ea71e2"
7179
+                "reference": "5183b61657807099d98f3367bcccb850238b17a9"
7180 7180
             },
7181 7181
             "dist": {
7182 7182
                 "type": "zip",
7183
-                "url": "https://api.github.com/repos/symfony/http-foundation/zipball/3d7bbf071b25f802f7d55524d408bed414ea71e2",
7184
-                "reference": "3d7bbf071b25f802f7d55524d408bed414ea71e2",
7183
+                "url": "https://api.github.com/repos/symfony/http-foundation/zipball/5183b61657807099d98f3367bcccb850238b17a9",
7184
+                "reference": "5183b61657807099d98f3367bcccb850238b17a9",
7185 7185
                 "shasum": ""
7186 7186
             },
7187 7187
             "require": {
@@ -7229,7 +7229,7 @@
7229 7229
             "description": "Defines an object-oriented layer for the HTTP specification",
7230 7230
             "homepage": "https://symfony.com",
7231 7231
             "support": {
7232
-                "source": "https://github.com/symfony/http-foundation/tree/v7.1.6"
7232
+                "source": "https://github.com/symfony/http-foundation/tree/v7.1.7"
7233 7233
             },
7234 7234
             "funding": [
7235 7235
                 {
@@ -7245,20 +7245,20 @@
7245 7245
                     "type": "tidelift"
7246 7246
                 }
7247 7247
             ],
7248
-            "time": "2024-10-11T19:23:14+00:00"
7248
+            "time": "2024-11-06T09:02:46+00:00"
7249 7249
         },
7250 7250
         {
7251 7251
             "name": "symfony/http-kernel",
7252
-            "version": "v7.1.6",
7252
+            "version": "v7.1.7",
7253 7253
             "source": {
7254 7254
                 "type": "git",
7255 7255
                 "url": "https://github.com/symfony/http-kernel.git",
7256
-                "reference": "5d8315899cd76b2e7e29179bf5fea103e41bdf03"
7256
+                "reference": "7f137cda31fd41e422edcdc01915f2c095b84399"
7257 7257
             },
7258 7258
             "dist": {
7259 7259
                 "type": "zip",
7260
-                "url": "https://api.github.com/repos/symfony/http-kernel/zipball/5d8315899cd76b2e7e29179bf5fea103e41bdf03",
7261
-                "reference": "5d8315899cd76b2e7e29179bf5fea103e41bdf03",
7260
+                "url": "https://api.github.com/repos/symfony/http-kernel/zipball/7f137cda31fd41e422edcdc01915f2c095b84399",
7261
+                "reference": "7f137cda31fd41e422edcdc01915f2c095b84399",
7262 7262
                 "shasum": ""
7263 7263
             },
7264 7264
             "require": {
@@ -7343,7 +7343,7 @@
7343 7343
             "description": "Provides a structured process for converting a Request into a Response",
7344 7344
             "homepage": "https://symfony.com",
7345 7345
             "support": {
7346
-                "source": "https://github.com/symfony/http-kernel/tree/v7.1.6"
7346
+                "source": "https://github.com/symfony/http-kernel/tree/v7.1.7"
7347 7347
             },
7348 7348
             "funding": [
7349 7349
                 {
@@ -7359,20 +7359,20 @@
7359 7359
                     "type": "tidelift"
7360 7360
                 }
7361 7361
             ],
7362
-            "time": "2024-10-27T13:54:21+00:00"
7362
+            "time": "2024-11-06T09:54:34+00:00"
7363 7363
         },
7364 7364
         {
7365 7365
             "name": "symfony/intl",
7366
-            "version": "v6.4.13",
7366
+            "version": "v6.4.14",
7367 7367
             "source": {
7368 7368
                 "type": "git",
7369 7369
                 "url": "https://github.com/symfony/intl.git",
7370
-                "reference": "e9fbfa4a20c01f8cc9cbbd59f5faa63f85fe644c"
7370
+                "reference": "4e852ff0b0f9851a7ca543ff731686d9a46574d1"
7371 7371
             },
7372 7372
             "dist": {
7373 7373
                 "type": "zip",
7374
-                "url": "https://api.github.com/repos/symfony/intl/zipball/e9fbfa4a20c01f8cc9cbbd59f5faa63f85fe644c",
7375
-                "reference": "e9fbfa4a20c01f8cc9cbbd59f5faa63f85fe644c",
7374
+                "url": "https://api.github.com/repos/symfony/intl/zipball/4e852ff0b0f9851a7ca543ff731686d9a46574d1",
7375
+                "reference": "4e852ff0b0f9851a7ca543ff731686d9a46574d1",
7376 7376
                 "shasum": ""
7377 7377
             },
7378 7378
             "require": {
@@ -7426,7 +7426,7 @@
7426 7426
                 "localization"
7427 7427
             ],
7428 7428
             "support": {
7429
-                "source": "https://github.com/symfony/intl/tree/v6.4.13"
7429
+                "source": "https://github.com/symfony/intl/tree/v6.4.14"
7430 7430
             },
7431 7431
             "funding": [
7432 7432
                 {
@@ -7442,7 +7442,7 @@
7442 7442
                     "type": "tidelift"
7443 7443
                 }
7444 7444
             ],
7445
-            "time": "2024-10-22T10:03:31+00:00"
7445
+            "time": "2024-11-05T15:34:40+00:00"
7446 7446
         },
7447 7447
         {
7448 7448
             "name": "symfony/mailer",
@@ -8246,16 +8246,16 @@
8246 8246
         },
8247 8247
         {
8248 8248
             "name": "symfony/process",
8249
-            "version": "v7.1.6",
8249
+            "version": "v7.1.7",
8250 8250
             "source": {
8251 8251
                 "type": "git",
8252 8252
                 "url": "https://github.com/symfony/process.git",
8253
-                "reference": "6aaa189ddb4ff6b5de8fa3210f2fb42c87b4d12e"
8253
+                "reference": "9b8a40b7289767aa7117e957573c2a535efe6585"
8254 8254
             },
8255 8255
             "dist": {
8256 8256
                 "type": "zip",
8257
-                "url": "https://api.github.com/repos/symfony/process/zipball/6aaa189ddb4ff6b5de8fa3210f2fb42c87b4d12e",
8258
-                "reference": "6aaa189ddb4ff6b5de8fa3210f2fb42c87b4d12e",
8257
+                "url": "https://api.github.com/repos/symfony/process/zipball/9b8a40b7289767aa7117e957573c2a535efe6585",
8258
+                "reference": "9b8a40b7289767aa7117e957573c2a535efe6585",
8259 8259
                 "shasum": ""
8260 8260
             },
8261 8261
             "require": {
@@ -8287,7 +8287,7 @@
8287 8287
             "description": "Executes commands in sub-processes",
8288 8288
             "homepage": "https://symfony.com",
8289 8289
             "support": {
8290
-                "source": "https://github.com/symfony/process/tree/v7.1.6"
8290
+                "source": "https://github.com/symfony/process/tree/v7.1.7"
8291 8291
             },
8292 8292
             "funding": [
8293 8293
                 {
@@ -8303,7 +8303,7 @@
8303 8303
                     "type": "tidelift"
8304 8304
                 }
8305 8305
             ],
8306
-            "time": "2024-09-25T14:20:29+00:00"
8306
+            "time": "2024-11-06T09:25:12+00:00"
8307 8307
         },
8308 8308
         {
8309 8309
             "name": "symfony/routing",
@@ -8804,16 +8804,16 @@
8804 8804
         },
8805 8805
         {
8806 8806
             "name": "symfony/var-dumper",
8807
-            "version": "v7.1.6",
8807
+            "version": "v7.1.7",
8808 8808
             "source": {
8809 8809
                 "type": "git",
8810 8810
                 "url": "https://github.com/symfony/var-dumper.git",
8811
-                "reference": "cb5bd55a6b8c2c1c7fb68b0aeae0e257948a720c"
8811
+                "reference": "f6ea51f669760cacd7464bf7eaa0be87b8072db1"
8812 8812
             },
8813 8813
             "dist": {
8814 8814
                 "type": "zip",
8815
-                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/cb5bd55a6b8c2c1c7fb68b0aeae0e257948a720c",
8816
-                "reference": "cb5bd55a6b8c2c1c7fb68b0aeae0e257948a720c",
8815
+                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/f6ea51f669760cacd7464bf7eaa0be87b8072db1",
8816
+                "reference": "f6ea51f669760cacd7464bf7eaa0be87b8072db1",
8817 8817
                 "shasum": ""
8818 8818
             },
8819 8819
             "require": {
@@ -8867,7 +8867,7 @@
8867 8867
                 "dump"
8868 8868
             ],
8869 8869
             "support": {
8870
-                "source": "https://github.com/symfony/var-dumper/tree/v7.1.6"
8870
+                "source": "https://github.com/symfony/var-dumper/tree/v7.1.7"
8871 8871
             },
8872 8872
             "funding": [
8873 8873
                 {
@@ -8883,7 +8883,7 @@
8883 8883
                     "type": "tidelift"
8884 8884
                 }
8885 8885
             ],
8886
-            "time": "2024-09-25T14:20:29+00:00"
8886
+            "time": "2024-11-05T15:34:55+00:00"
8887 8887
         },
8888 8888
         {
8889 8889
             "name": "tijsverkoyen/css-to-inline-styles",
@@ -9251,16 +9251,16 @@
9251 9251
         },
9252 9252
         {
9253 9253
             "name": "fakerphp/faker",
9254
-            "version": "v1.23.1",
9254
+            "version": "v1.24.0",
9255 9255
             "source": {
9256 9256
                 "type": "git",
9257 9257
                 "url": "https://github.com/FakerPHP/Faker.git",
9258
-                "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b"
9258
+                "reference": "a136842a532bac9ecd8a1c723852b09915d7db50"
9259 9259
             },
9260 9260
             "dist": {
9261 9261
                 "type": "zip",
9262
-                "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/bfb4fe148adbf78eff521199619b93a52ae3554b",
9263
-                "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b",
9262
+                "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/a136842a532bac9ecd8a1c723852b09915d7db50",
9263
+                "reference": "a136842a532bac9ecd8a1c723852b09915d7db50",
9264 9264
                 "shasum": ""
9265 9265
             },
9266 9266
             "require": {
@@ -9308,9 +9308,9 @@
9308 9308
             ],
9309 9309
             "support": {
9310 9310
                 "issues": "https://github.com/FakerPHP/Faker/issues",
9311
-                "source": "https://github.com/FakerPHP/Faker/tree/v1.23.1"
9311
+                "source": "https://github.com/FakerPHP/Faker/tree/v1.24.0"
9312 9312
             },
9313
-            "time": "2024-01-02T13:46:09+00:00"
9313
+            "time": "2024-11-07T15:11:20+00:00"
9314 9314
         },
9315 9315
         {
9316 9316
             "name": "fidry/cpu-core-counter",
@@ -9768,16 +9768,16 @@
9768 9768
         },
9769 9769
         {
9770 9770
             "name": "myclabs/deep-copy",
9771
-            "version": "1.12.0",
9771
+            "version": "1.12.1",
9772 9772
             "source": {
9773 9773
                 "type": "git",
9774 9774
                 "url": "https://github.com/myclabs/DeepCopy.git",
9775
-                "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c"
9775
+                "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845"
9776 9776
             },
9777 9777
             "dist": {
9778 9778
                 "type": "zip",
9779
-                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c",
9780
-                "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c",
9779
+                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/123267b2c49fbf30d78a7b2d333f6be754b94845",
9780
+                "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845",
9781 9781
                 "shasum": ""
9782 9782
             },
9783 9783
             "require": {
@@ -9816,7 +9816,7 @@
9816 9816
             ],
9817 9817
             "support": {
9818 9818
                 "issues": "https://github.com/myclabs/DeepCopy/issues",
9819
-                "source": "https://github.com/myclabs/DeepCopy/tree/1.12.0"
9819
+                "source": "https://github.com/myclabs/DeepCopy/tree/1.12.1"
9820 9820
             },
9821 9821
             "funding": [
9822 9822
                 {
@@ -9824,7 +9824,7 @@
9824 9824
                     "type": "tidelift"
9825 9825
                 }
9826 9826
             ],
9827
-            "time": "2024-06-12T14:39:25+00:00"
9827
+            "time": "2024-11-08T17:47:46+00:00"
9828 9828
         },
9829 9829
         {
9830 9830
             "name": "nunomaduro/collision",
@@ -10614,16 +10614,16 @@
10614 10614
         },
10615 10615
         {
10616 10616
             "name": "phpdocumentor/reflection-docblock",
10617
-            "version": "5.5.0",
10617
+            "version": "5.5.1",
10618 10618
             "source": {
10619 10619
                 "type": "git",
10620 10620
                 "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
10621
-                "reference": "54e10d44fc1a84e2598d26f70d4f6f1f233e228a"
10621
+                "reference": "0c70d2c566e899666f367ab7b80986beb3581e6f"
10622 10622
             },
10623 10623
             "dist": {
10624 10624
                 "type": "zip",
10625
-                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/54e10d44fc1a84e2598d26f70d4f6f1f233e228a",
10626
-                "reference": "54e10d44fc1a84e2598d26f70d4f6f1f233e228a",
10625
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/0c70d2c566e899666f367ab7b80986beb3581e6f",
10626
+                "reference": "0c70d2c566e899666f367ab7b80986beb3581e6f",
10627 10627
                 "shasum": ""
10628 10628
             },
10629 10629
             "require": {
@@ -10672,29 +10672,29 @@
10672 10672
             "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
10673 10673
             "support": {
10674 10674
                 "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
10675
-                "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.5.0"
10675
+                "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.5.1"
10676 10676
             },
10677
-            "time": "2024-11-04T21:26:31+00:00"
10677
+            "time": "2024-11-06T11:58:54+00:00"
10678 10678
         },
10679 10679
         {
10680 10680
             "name": "phpdocumentor/type-resolver",
10681
-            "version": "1.9.0",
10681
+            "version": "1.10.0",
10682 10682
             "source": {
10683 10683
                 "type": "git",
10684 10684
                 "url": "https://github.com/phpDocumentor/TypeResolver.git",
10685
-                "reference": "1fb5ba8d045f5dd984ebded5b1cc66f29459422d"
10685
+                "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a"
10686 10686
             },
10687 10687
             "dist": {
10688 10688
                 "type": "zip",
10689
-                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/1fb5ba8d045f5dd984ebded5b1cc66f29459422d",
10690
-                "reference": "1fb5ba8d045f5dd984ebded5b1cc66f29459422d",
10689
+                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/679e3ce485b99e84c775d28e2e96fade9a7fb50a",
10690
+                "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a",
10691 10691
                 "shasum": ""
10692 10692
             },
10693 10693
             "require": {
10694 10694
                 "doctrine/deprecations": "^1.0",
10695 10695
                 "php": "^7.3 || ^8.0",
10696 10696
                 "phpdocumentor/reflection-common": "^2.0",
10697
-                "phpstan/phpdoc-parser": "^1.18"
10697
+                "phpstan/phpdoc-parser": "^1.18|^2.0"
10698 10698
             },
10699 10699
             "require-dev": {
10700 10700
                 "ext-tokenizer": "*",
@@ -10730,9 +10730,9 @@
10730 10730
             "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
10731 10731
             "support": {
10732 10732
                 "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
10733
-                "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.9.0"
10733
+                "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.10.0"
10734 10734
             },
10735
-            "time": "2024-11-03T20:11:34+00:00"
10735
+            "time": "2024-11-09T15:12:26+00:00"
10736 10736
         },
10737 10737
         {
10738 10738
             "name": "phpstan/phpdoc-parser",
@@ -10783,16 +10783,16 @@
10783 10783
         },
10784 10784
         {
10785 10785
             "name": "phpstan/phpstan",
10786
-            "version": "1.12.7",
10786
+            "version": "1.12.8",
10787 10787
             "source": {
10788 10788
                 "type": "git",
10789 10789
                 "url": "https://github.com/phpstan/phpstan.git",
10790
-                "reference": "dc2b9976bd8b0f84ec9b0e50cc35378551de7af0"
10790
+                "reference": "f6a60a4d66142b8156c9da923f1972657bc4748c"
10791 10791
             },
10792 10792
             "dist": {
10793 10793
                 "type": "zip",
10794
-                "url": "https://api.github.com/repos/phpstan/phpstan/zipball/dc2b9976bd8b0f84ec9b0e50cc35378551de7af0",
10795
-                "reference": "dc2b9976bd8b0f84ec9b0e50cc35378551de7af0",
10794
+                "url": "https://api.github.com/repos/phpstan/phpstan/zipball/f6a60a4d66142b8156c9da923f1972657bc4748c",
10795
+                "reference": "f6a60a4d66142b8156c9da923f1972657bc4748c",
10796 10796
                 "shasum": ""
10797 10797
             },
10798 10798
             "require": {
@@ -10837,7 +10837,7 @@
10837 10837
                     "type": "github"
10838 10838
                 }
10839 10839
             ],
10840
-            "time": "2024-10-18T11:12:07+00:00"
10840
+            "time": "2024-11-06T19:06:49+00:00"
10841 10841
         },
10842 10842
         {
10843 10843
             "name": "phpunit/php-code-coverage",
@@ -11264,16 +11264,16 @@
11264 11264
         },
11265 11265
         {
11266 11266
             "name": "rector/rector",
11267
-            "version": "1.2.9",
11267
+            "version": "1.2.10",
11268 11268
             "source": {
11269 11269
                 "type": "git",
11270 11270
                 "url": "https://github.com/rectorphp/rector.git",
11271
-                "reference": "7923bd5e48f8c26a922df91f7174f5bca2b3671d"
11271
+                "reference": "40f9cf38c05296bd32f444121336a521a293fa61"
11272 11272
             },
11273 11273
             "dist": {
11274 11274
                 "type": "zip",
11275
-                "url": "https://api.github.com/repos/rectorphp/rector/zipball/7923bd5e48f8c26a922df91f7174f5bca2b3671d",
11276
-                "reference": "7923bd5e48f8c26a922df91f7174f5bca2b3671d",
11275
+                "url": "https://api.github.com/repos/rectorphp/rector/zipball/40f9cf38c05296bd32f444121336a521a293fa61",
11276
+                "reference": "40f9cf38c05296bd32f444121336a521a293fa61",
11277 11277
                 "shasum": ""
11278 11278
             },
11279 11279
             "require": {
@@ -11311,7 +11311,7 @@
11311 11311
             ],
11312 11312
             "support": {
11313 11313
                 "issues": "https://github.com/rectorphp/rector/issues",
11314
-                "source": "https://github.com/rectorphp/rector/tree/1.2.9"
11314
+                "source": "https://github.com/rectorphp/rector/tree/1.2.10"
11315 11315
             },
11316 11316
             "funding": [
11317 11317
                 {
@@ -11319,7 +11319,7 @@
11319 11319
                     "type": "github"
11320 11320
                 }
11321 11321
             ],
11322
-            "time": "2024-11-04T18:26:57+00:00"
11322
+            "time": "2024-11-08T13:59:10+00:00"
11323 11323
         },
11324 11324
         {
11325 11325
             "name": "sebastian/cli-parser",

+ 2
- 2
config/chart-of-accounts.php ファイルの表示

@@ -266,7 +266,7 @@ return [
266 266
                 'description' => 'Revenue that is deducted from gross revenue to arrive at net revenue. This includes sales discounts, returns, and allowances.',
267 267
                 'multi_currency' => false,
268 268
                 'base_code' => '4900',
269
-                'inverse_cash_flow' => true,
269
+                'inverse_cash_flow' => false,
270 270
                 'accounts' => [
271 271
                     'Sales Returns and Allowances' => [
272 272
                         'description' => 'The amount of money returned to customers or deducted from sales due to returned goods or allowances granted.',
@@ -429,7 +429,7 @@ return [
429 429
                 'description' => 'Expenses that are deducted from gross expenses to arrive at net expenses. This includes purchase discounts, returns, and allowances.',
430 430
                 'multi_currency' => false,
431 431
                 'base_code' => '5900',
432
-                'inverse_cash_flow' => false,
432
+                'inverse_cash_flow' => true,
433 433
                 'accounts' => [
434 434
                     'Purchase Returns and Allowances' => [
435 435
                         'description' => 'The amount of money returned to suppliers or deducted from purchases due to returned goods or allowances granted.',

+ 84
- 84
package-lock.json ファイルの表示

@@ -541,9 +541,9 @@
541 541
             }
542 542
         },
543 543
         "node_modules/@rollup/rollup-android-arm-eabi": {
544
-            "version": "4.24.4",
545
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.4.tgz",
546
-            "integrity": "sha512-jfUJrFct/hTA0XDM5p/htWKoNNTbDLY0KRwEt6pyOA6k2fmk0WVwl65PdUdJZgzGEHWx+49LilkcSaumQRyNQw==",
544
+            "version": "4.25.0",
545
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.25.0.tgz",
546
+            "integrity": "sha512-CC/ZqFZwlAIbU1wUPisHyV/XRc5RydFrNLtgl3dGYskdwPZdt4HERtKm50a/+DtTlKeCq9IXFEWR+P6blwjqBA==",
547 547
             "cpu": [
548 548
                 "arm"
549 549
             ],
@@ -555,9 +555,9 @@
555 555
             ]
556 556
         },
557 557
         "node_modules/@rollup/rollup-android-arm64": {
558
-            "version": "4.24.4",
559
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.4.tgz",
560
-            "integrity": "sha512-j4nrEO6nHU1nZUuCfRKoCcvh7PIywQPUCBa2UsootTHvTHIoIu2BzueInGJhhvQO/2FTRdNYpf63xsgEqH9IhA==",
558
+            "version": "4.25.0",
559
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.25.0.tgz",
560
+            "integrity": "sha512-/Y76tmLGUJqVBXXCfVS8Q8FJqYGhgH4wl4qTA24E9v/IJM0XvJCGQVSW1QZ4J+VURO9h8YCa28sTFacZXwK7Rg==",
561 561
             "cpu": [
562 562
                 "arm64"
563 563
             ],
@@ -569,9 +569,9 @@
569 569
             ]
570 570
         },
571 571
         "node_modules/@rollup/rollup-darwin-arm64": {
572
-            "version": "4.24.4",
573
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.4.tgz",
574
-            "integrity": "sha512-GmU/QgGtBTeraKyldC7cDVVvAJEOr3dFLKneez/n7BvX57UdhOqDsVwzU7UOnYA7AAOt+Xb26lk79PldDHgMIQ==",
572
+            "version": "4.25.0",
573
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.25.0.tgz",
574
+            "integrity": "sha512-YVT6L3UrKTlC0FpCZd0MGA7NVdp7YNaEqkENbWQ7AOVOqd/7VzyHpgIpc1mIaxRAo1ZsJRH45fq8j4N63I/vvg==",
575 575
             "cpu": [
576 576
                 "arm64"
577 577
             ],
@@ -583,9 +583,9 @@
583 583
             ]
584 584
         },
585 585
         "node_modules/@rollup/rollup-darwin-x64": {
586
-            "version": "4.24.4",
587
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.4.tgz",
588
-            "integrity": "sha512-N6oDBiZCBKlwYcsEPXGDE4g9RoxZLK6vT98M8111cW7VsVJFpNEqvJeIPfsCzbf0XEakPslh72X0gnlMi4Ddgg==",
586
+            "version": "4.25.0",
587
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.25.0.tgz",
588
+            "integrity": "sha512-ZRL+gexs3+ZmmWmGKEU43Bdn67kWnMeWXLFhcVv5Un8FQcx38yulHBA7XR2+KQdYIOtD0yZDWBCudmfj6lQJoA==",
589 589
             "cpu": [
590 590
                 "x64"
591 591
             ],
@@ -597,9 +597,9 @@
597 597
             ]
598 598
         },
599 599
         "node_modules/@rollup/rollup-freebsd-arm64": {
600
-            "version": "4.24.4",
601
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.24.4.tgz",
602
-            "integrity": "sha512-py5oNShCCjCyjWXCZNrRGRpjWsF0ic8f4ieBNra5buQz0O/U6mMXCpC1LvrHuhJsNPgRt36tSYMidGzZiJF6mw==",
600
+            "version": "4.25.0",
601
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.25.0.tgz",
602
+            "integrity": "sha512-xpEIXhiP27EAylEpreCozozsxWQ2TJbOLSivGfXhU4G1TBVEYtUPi2pOZBnvGXHyOdLAUUhPnJzH3ah5cqF01g==",
603 603
             "cpu": [
604 604
                 "arm64"
605 605
             ],
@@ -611,9 +611,9 @@
611 611
             ]
612 612
         },
613 613
         "node_modules/@rollup/rollup-freebsd-x64": {
614
-            "version": "4.24.4",
615
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.24.4.tgz",
616
-            "integrity": "sha512-L7VVVW9FCnTTp4i7KrmHeDsDvjB4++KOBENYtNYAiYl96jeBThFfhP6HVxL74v4SiZEVDH/1ILscR5U9S4ms4g==",
614
+            "version": "4.25.0",
615
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.25.0.tgz",
616
+            "integrity": "sha512-sC5FsmZGlJv5dOcURrsnIK7ngc3Kirnx3as2XU9uER+zjfyqIjdcMVgzy4cOawhsssqzoAX19qmxgJ8a14Qrqw==",
617 617
             "cpu": [
618 618
                 "x64"
619 619
             ],
@@ -625,9 +625,9 @@
625 625
             ]
626 626
         },
627 627
         "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
628
-            "version": "4.24.4",
629
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.4.tgz",
630
-            "integrity": "sha512-10ICosOwYChROdQoQo589N5idQIisxjaFE/PAnX2i0Zr84mY0k9zul1ArH0rnJ/fpgiqfu13TFZR5A5YJLOYZA==",
628
+            "version": "4.25.0",
629
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.25.0.tgz",
630
+            "integrity": "sha512-uD/dbLSs1BEPzg564TpRAQ/YvTnCds2XxyOndAO8nJhaQcqQGFgv/DAVko/ZHap3boCvxnzYMa3mTkV/B/3SWA==",
631 631
             "cpu": [
632 632
                 "arm"
633 633
             ],
@@ -639,9 +639,9 @@
639 639
             ]
640 640
         },
641 641
         "node_modules/@rollup/rollup-linux-arm-musleabihf": {
642
-            "version": "4.24.4",
643
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.4.tgz",
644
-            "integrity": "sha512-ySAfWs69LYC7QhRDZNKqNhz2UKN8LDfbKSMAEtoEI0jitwfAG2iZwVqGACJT+kfYvvz3/JgsLlcBP+WWoKCLcw==",
642
+            "version": "4.25.0",
643
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.25.0.tgz",
644
+            "integrity": "sha512-ZVt/XkrDlQWegDWrwyC3l0OfAF7yeJUF4fq5RMS07YM72BlSfn2fQQ6lPyBNjt+YbczMguPiJoCfaQC2dnflpQ==",
645 645
             "cpu": [
646 646
                 "arm"
647 647
             ],
@@ -653,9 +653,9 @@
653 653
             ]
654 654
         },
655 655
         "node_modules/@rollup/rollup-linux-arm64-gnu": {
656
-            "version": "4.24.4",
657
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.4.tgz",
658
-            "integrity": "sha512-uHYJ0HNOI6pGEeZ/5mgm5arNVTI0nLlmrbdph+pGXpC9tFHFDQmDMOEqkmUObRfosJqpU8RliYoGz06qSdtcjg==",
656
+            "version": "4.25.0",
657
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.25.0.tgz",
658
+            "integrity": "sha512-qboZ+T0gHAW2kkSDPHxu7quaFaaBlynODXpBVnPxUgvWYaE84xgCKAPEYE+fSMd3Zv5PyFZR+L0tCdYCMAtG0A==",
659 659
             "cpu": [
660 660
                 "arm64"
661 661
             ],
@@ -667,9 +667,9 @@
667 667
             ]
668 668
         },
669 669
         "node_modules/@rollup/rollup-linux-arm64-musl": {
670
-            "version": "4.24.4",
671
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.4.tgz",
672
-            "integrity": "sha512-38yiWLemQf7aLHDgTg85fh3hW9stJ0Muk7+s6tIkSUOMmi4Xbv5pH/5Bofnsb6spIwD5FJiR+jg71f0CH5OzoA==",
670
+            "version": "4.25.0",
671
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.25.0.tgz",
672
+            "integrity": "sha512-ndWTSEmAaKr88dBuogGH2NZaxe7u2rDoArsejNslugHZ+r44NfWiwjzizVS1nUOHo+n1Z6qV3X60rqE/HlISgw==",
673 673
             "cpu": [
674 674
                 "arm64"
675 675
             ],
@@ -681,9 +681,9 @@
681 681
             ]
682 682
         },
683 683
         "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
684
-            "version": "4.24.4",
685
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.4.tgz",
686
-            "integrity": "sha512-q73XUPnkwt9ZNF2xRS4fvneSuaHw2BXuV5rI4cw0fWYVIWIBeDZX7c7FWhFQPNTnE24172K30I+dViWRVD9TwA==",
684
+            "version": "4.25.0",
685
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.25.0.tgz",
686
+            "integrity": "sha512-BVSQvVa2v5hKwJSy6X7W1fjDex6yZnNKy3Kx1JGimccHft6HV0THTwNtC2zawtNXKUu+S5CjXslilYdKBAadzA==",
687 687
             "cpu": [
688 688
                 "ppc64"
689 689
             ],
@@ -695,9 +695,9 @@
695 695
             ]
696 696
         },
697 697
         "node_modules/@rollup/rollup-linux-riscv64-gnu": {
698
-            "version": "4.24.4",
699
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.4.tgz",
700
-            "integrity": "sha512-Aie/TbmQi6UXokJqDZdmTJuZBCU3QBDA8oTKRGtd4ABi/nHgXICulfg1KI6n9/koDsiDbvHAiQO3YAUNa/7BCw==",
698
+            "version": "4.25.0",
699
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.25.0.tgz",
700
+            "integrity": "sha512-G4hTREQrIdeV0PE2JruzI+vXdRnaK1pg64hemHq2v5fhv8C7WjVaeXc9P5i4Q5UC06d/L+zA0mszYIKl+wY8oA==",
701 701
             "cpu": [
702 702
                 "riscv64"
703 703
             ],
@@ -709,9 +709,9 @@
709 709
             ]
710 710
         },
711 711
         "node_modules/@rollup/rollup-linux-s390x-gnu": {
712
-            "version": "4.24.4",
713
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.4.tgz",
714
-            "integrity": "sha512-P8MPErVO/y8ohWSP9JY7lLQ8+YMHfTI4bAdtCi3pC2hTeqFJco2jYspzOzTUB8hwUWIIu1xwOrJE11nP+0JFAQ==",
712
+            "version": "4.25.0",
713
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.25.0.tgz",
714
+            "integrity": "sha512-9T/w0kQ+upxdkFL9zPVB6zy9vWW1deA3g8IauJxojN4bnz5FwSsUAD034KpXIVX5j5p/rn6XqumBMxfRkcHapQ==",
715 715
             "cpu": [
716 716
                 "s390x"
717 717
             ],
@@ -723,9 +723,9 @@
723 723
             ]
724 724
         },
725 725
         "node_modules/@rollup/rollup-linux-x64-gnu": {
726
-            "version": "4.24.4",
727
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.4.tgz",
728
-            "integrity": "sha512-K03TljaaoPK5FOyNMZAAEmhlyO49LaE4qCsr0lYHUKyb6QacTNF9pnfPpXnFlFD3TXuFbFbz7tJ51FujUXkXYA==",
726
+            "version": "4.25.0",
727
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.25.0.tgz",
728
+            "integrity": "sha512-ThcnU0EcMDn+J4B9LD++OgBYxZusuA7iemIIiz5yzEcFg04VZFzdFjuwPdlURmYPZw+fgVrFzj4CA64jSTG4Ig==",
729 729
             "cpu": [
730 730
                 "x64"
731 731
             ],
@@ -737,9 +737,9 @@
737 737
             ]
738 738
         },
739 739
         "node_modules/@rollup/rollup-linux-x64-musl": {
740
-            "version": "4.24.4",
741
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.4.tgz",
742
-            "integrity": "sha512-VJYl4xSl/wqG2D5xTYncVWW+26ICV4wubwN9Gs5NrqhJtayikwCXzPL8GDsLnaLU3WwhQ8W02IinYSFJfyo34Q==",
740
+            "version": "4.25.0",
741
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.25.0.tgz",
742
+            "integrity": "sha512-zx71aY2oQxGxAT1JShfhNG79PnjYhMC6voAjzpu/xmMjDnKNf6Nl/xv7YaB/9SIa9jDYf8RBPWEnjcdlhlv1rQ==",
743 743
             "cpu": [
744 744
                 "x64"
745 745
             ],
@@ -751,9 +751,9 @@
751 751
             ]
752 752
         },
753 753
         "node_modules/@rollup/rollup-win32-arm64-msvc": {
754
-            "version": "4.24.4",
755
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.4.tgz",
756
-            "integrity": "sha512-ku2GvtPwQfCqoPFIJCqZ8o7bJcj+Y54cZSr43hHca6jLwAiCbZdBUOrqE6y29QFajNAzzpIOwsckaTFmN6/8TA==",
754
+            "version": "4.25.0",
755
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.25.0.tgz",
756
+            "integrity": "sha512-JT8tcjNocMs4CylWY/CxVLnv8e1lE7ff1fi6kbGocWwxDq9pj30IJ28Peb+Y8yiPNSF28oad42ApJB8oUkwGww==",
757 757
             "cpu": [
758 758
                 "arm64"
759 759
             ],
@@ -765,9 +765,9 @@
765 765
             ]
766 766
         },
767 767
         "node_modules/@rollup/rollup-win32-ia32-msvc": {
768
-            "version": "4.24.4",
769
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.4.tgz",
770
-            "integrity": "sha512-V3nCe+eTt/W6UYNr/wGvO1fLpHUrnlirlypZfKCT1fG6hWfqhPgQV/K/mRBXBpxc0eKLIF18pIOFVPh0mqHjlg==",
768
+            "version": "4.25.0",
769
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.25.0.tgz",
770
+            "integrity": "sha512-dRLjLsO3dNOfSN6tjyVlG+Msm4IiZnGkuZ7G5NmpzwF9oOc582FZG05+UdfTbz5Jd4buK/wMb6UeHFhG18+OEg==",
771 771
             "cpu": [
772 772
                 "ia32"
773 773
             ],
@@ -779,9 +779,9 @@
779 779
             ]
780 780
         },
781 781
         "node_modules/@rollup/rollup-win32-x64-msvc": {
782
-            "version": "4.24.4",
783
-            "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.4.tgz",
784
-            "integrity": "sha512-LTw1Dfd0mBIEqUVCxbvTE/LLo+9ZxVC9k99v1v4ahg9Aak6FpqOfNu5kRkeTAn0wphoC4JU7No1/rL+bBCEwhg==",
782
+            "version": "4.25.0",
783
+            "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.25.0.tgz",
784
+            "integrity": "sha512-/RqrIFtLB926frMhZD0a5oDa4eFIbyNEwLLloMTEjmqfwZWXywwVVOVmwTsuyhC9HKkVEZcOOi+KV4U9wmOdlg==",
785 785
             "cpu": [
786 786
                 "x64"
787 787
             ],
@@ -1026,9 +1026,9 @@
1026 1026
             }
1027 1027
         },
1028 1028
         "node_modules/caniuse-lite": {
1029
-            "version": "1.0.30001677",
1030
-            "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001677.tgz",
1031
-            "integrity": "sha512-fmfjsOlJUpMWu+mAAtZZZHz7UEwsUxIIvu1TJfO1HqFQvB/B+ii0xr9B5HpbZY/mC4XZ8SvjHJqtAY6pDPQEog==",
1029
+            "version": "1.0.30001679",
1030
+            "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001679.tgz",
1031
+            "integrity": "sha512-j2YqID/YwpLnKzCmBOS4tlZdWprXm3ZmQLBH9ZBXFOhoxLA46fwyBvx6toCBWBmnuwUY/qB3kEU6gFx8qgCroA==",
1032 1032
             "dev": true,
1033 1033
             "funding": [
1034 1034
                 {
@@ -1128,9 +1128,9 @@
1128 1128
             }
1129 1129
         },
1130 1130
         "node_modules/cross-spawn": {
1131
-            "version": "7.0.3",
1132
-            "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
1133
-            "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
1131
+            "version": "7.0.5",
1132
+            "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.5.tgz",
1133
+            "integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==",
1134 1134
             "dev": true,
1135 1135
             "license": "MIT",
1136 1136
             "dependencies": {
@@ -1187,9 +1187,9 @@
1187 1187
             "license": "MIT"
1188 1188
         },
1189 1189
         "node_modules/electron-to-chromium": {
1190
-            "version": "1.5.51",
1191
-            "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.51.tgz",
1192
-            "integrity": "sha512-kKeWV57KSS8jH4alKt/jKnvHPmJgBxXzGUSbMd4eQF+iOsVPl7bz2KUmu6eo80eMP8wVioTfTyTzdMgM15WXNg==",
1190
+            "version": "1.5.55",
1191
+            "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.55.tgz",
1192
+            "integrity": "sha512-6maZ2ASDOTBtjt9FhqYPRnbvKU5tjG0IN9SztUOWYw2AzNDNpKJYLJmlK0/En4Hs/aiWnB+JZ+gW19PIGszgKg==",
1193 1193
             "dev": true,
1194 1194
             "license": "ISC"
1195 1195
         },
@@ -2199,9 +2199,9 @@
2199 2199
             }
2200 2200
         },
2201 2201
         "node_modules/rollup": {
2202
-            "version": "4.24.4",
2203
-            "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.4.tgz",
2204
-            "integrity": "sha512-vGorVWIsWfX3xbcyAS+I047kFKapHYivmkaT63Smj77XwvLSJos6M1xGqZnBPFQFBRZDOcG1QnYEIxAvTr/HjA==",
2202
+            "version": "4.25.0",
2203
+            "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.25.0.tgz",
2204
+            "integrity": "sha512-uVbClXmR6wvx5R1M3Od4utyLUxrmOcEm3pAtMphn73Apq19PDtHpgZoEvqH2YnnaNUuvKmg2DgRd2Sqv+odyqg==",
2205 2205
             "dev": true,
2206 2206
             "license": "MIT",
2207 2207
             "dependencies": {
@@ -2215,24 +2215,24 @@
2215 2215
                 "npm": ">=8.0.0"
2216 2216
             },
2217 2217
             "optionalDependencies": {
2218
-                "@rollup/rollup-android-arm-eabi": "4.24.4",
2219
-                "@rollup/rollup-android-arm64": "4.24.4",
2220
-                "@rollup/rollup-darwin-arm64": "4.24.4",
2221
-                "@rollup/rollup-darwin-x64": "4.24.4",
2222
-                "@rollup/rollup-freebsd-arm64": "4.24.4",
2223
-                "@rollup/rollup-freebsd-x64": "4.24.4",
2224
-                "@rollup/rollup-linux-arm-gnueabihf": "4.24.4",
2225
-                "@rollup/rollup-linux-arm-musleabihf": "4.24.4",
2226
-                "@rollup/rollup-linux-arm64-gnu": "4.24.4",
2227
-                "@rollup/rollup-linux-arm64-musl": "4.24.4",
2228
-                "@rollup/rollup-linux-powerpc64le-gnu": "4.24.4",
2229
-                "@rollup/rollup-linux-riscv64-gnu": "4.24.4",
2230
-                "@rollup/rollup-linux-s390x-gnu": "4.24.4",
2231
-                "@rollup/rollup-linux-x64-gnu": "4.24.4",
2232
-                "@rollup/rollup-linux-x64-musl": "4.24.4",
2233
-                "@rollup/rollup-win32-arm64-msvc": "4.24.4",
2234
-                "@rollup/rollup-win32-ia32-msvc": "4.24.4",
2235
-                "@rollup/rollup-win32-x64-msvc": "4.24.4",
2218
+                "@rollup/rollup-android-arm-eabi": "4.25.0",
2219
+                "@rollup/rollup-android-arm64": "4.25.0",
2220
+                "@rollup/rollup-darwin-arm64": "4.25.0",
2221
+                "@rollup/rollup-darwin-x64": "4.25.0",
2222
+                "@rollup/rollup-freebsd-arm64": "4.25.0",
2223
+                "@rollup/rollup-freebsd-x64": "4.25.0",
2224
+                "@rollup/rollup-linux-arm-gnueabihf": "4.25.0",
2225
+                "@rollup/rollup-linux-arm-musleabihf": "4.25.0",
2226
+                "@rollup/rollup-linux-arm64-gnu": "4.25.0",
2227
+                "@rollup/rollup-linux-arm64-musl": "4.25.0",
2228
+                "@rollup/rollup-linux-powerpc64le-gnu": "4.25.0",
2229
+                "@rollup/rollup-linux-riscv64-gnu": "4.25.0",
2230
+                "@rollup/rollup-linux-s390x-gnu": "4.25.0",
2231
+                "@rollup/rollup-linux-x64-gnu": "4.25.0",
2232
+                "@rollup/rollup-linux-x64-musl": "4.25.0",
2233
+                "@rollup/rollup-win32-arm64-msvc": "4.25.0",
2234
+                "@rollup/rollup-win32-ia32-msvc": "4.25.0",
2235
+                "@rollup/rollup-win32-x64-msvc": "4.25.0",
2236 2236
                 "fsevents": "~2.3.2"
2237 2237
             }
2238 2238
         },

+ 4
- 0
resources/views/components/company/tables/cell.blade.php ファイルの表示

@@ -2,6 +2,8 @@
2 2
     'alignmentClass',
3 3
     'indent' => false,
4 4
     'bold' => false,
5
+    'underlineThin' => false,
6
+    'underlineBold' => false,
5 7
 ])
6 8
 
7 9
 <td
@@ -16,6 +18,8 @@
16 18
         @class([
17 19
             'px-3 py-4 text-sm leading-6 text-gray-950 dark:text-white',
18 20
             'font-semibold' => $bold,
21
+            'border-b border-gray-700 dark:border-white/10' => $underlineThin,
22
+            'border-b-[1.5px] border-gray-800 dark:border-white/5' => $underlineBold,
19 23
         ])
20 24
     >
21 25
         {{ $slot }}

+ 190
- 0
resources/views/components/company/tables/reports/cash-flow-statement.blade.php ファイルの表示

@@ -0,0 +1,190 @@
1
+<table class="w-full table-auto divide-y divide-gray-200 dark:divide-white/5">
2
+    <x-company.tables.header :headers="$report->getHeaders()" :alignment-class="[$report, 'getAlignmentClass']"/>
3
+    @foreach($report->getCategories() as $accountCategory)
4
+        <tbody class="divide-y divide-gray-200 whitespace-nowrap dark:divide-white/5">
5
+        <x-company.tables.category-header :category-headers="$accountCategory->header"
6
+                                          :alignment-class="[$report, 'getAlignmentClass']"/>
7
+        @foreach($accountCategory->data as $categoryAccount)
8
+            <tr>
9
+                @foreach($categoryAccount as $accountIndex => $categoryAccountCell)
10
+                    <x-company.tables.cell :alignment-class="$report->getAlignmentClass($accountIndex)"
11
+                                           indent="true">
12
+                        @if(is_array($categoryAccountCell) && isset($categoryAccountCell['name']))
13
+                            @if($categoryAccountCell['name'] === 'Retained Earnings' && isset($categoryAccountCell['start_date']) && isset($categoryAccountCell['end_date']))
14
+                                <x-filament::link
15
+                                    color="primary"
16
+                                    target="_blank"
17
+                                    icon="heroicon-o-arrow-top-right-on-square"
18
+                                    :icon-position="\Filament\Support\Enums\IconPosition::After"
19
+                                    :icon-size="\Filament\Support\Enums\IconSize::Small"
20
+                                    href="{{ \App\Filament\Company\Pages\Reports\IncomeStatement::getUrl([
21
+                                            'startDate' => $categoryAccountCell['start_date'],
22
+                                            'endDate' => $categoryAccountCell['end_date']
23
+                                        ]) }}"
24
+                                >
25
+                                    {{ $categoryAccountCell['name'] }}
26
+                                </x-filament::link>
27
+                            @elseif(isset($categoryAccountCell['id']) && isset($categoryAccountCell['start_date']) && isset($categoryAccountCell['end_date']))
28
+                                <x-filament::link
29
+                                    color="primary"
30
+                                    target="_blank"
31
+                                    icon="heroicon-o-arrow-top-right-on-square"
32
+                                    :icon-position="\Filament\Support\Enums\IconPosition::After"
33
+                                    :icon-size="\Filament\Support\Enums\IconSize::Small"
34
+                                    href="{{ \App\Filament\Company\Pages\Reports\AccountTransactions::getUrl([
35
+                                            'startDate' => $categoryAccountCell['start_date'],
36
+                                            'endDate' => $categoryAccountCell['end_date'],
37
+                                            'selectedAccount' => $categoryAccountCell['id']
38
+                                        ]) }}"
39
+                                >
40
+                                    {{ $categoryAccountCell['name'] }}
41
+                                </x-filament::link>
42
+                            @else
43
+                                {{ $categoryAccountCell['name'] }}
44
+                            @endif
45
+                        @else
46
+                            {{ $categoryAccountCell }}
47
+                        @endif
48
+                    </x-company.tables.cell>
49
+                @endforeach
50
+            </tr>
51
+        @endforeach
52
+        @foreach($accountCategory->types as $accountType)
53
+            <tr class="bg-gray-50 dark:bg-white/5">
54
+                @foreach($accountType->header as $accountTypeHeaderIndex => $accountTypeHeaderCell)
55
+                    <x-company.tables.cell :alignment-class="$report->getAlignmentClass($accountTypeHeaderIndex)"
56
+                                           indent="true" bold="true">
57
+                        {{ $accountTypeHeaderCell }}
58
+                    </x-company.tables.cell>
59
+                @endforeach
60
+            </tr>
61
+            @foreach($accountType->data as $typeAccount)
62
+                <tr>
63
+                    @foreach($typeAccount as $accountIndex => $typeAccountCell)
64
+                        <x-company.tables.cell :alignment-class="$report->getAlignmentClass($accountIndex)"
65
+                                               indent="true">
66
+                            @if(is_array($typeAccountCell) && isset($typeAccountCell['name']))
67
+                                @if($typeAccountCell['name'] === 'Retained Earnings' && isset($typeAccountCell['start_date']) && isset($typeAccountCell['end_date']))
68
+                                    <x-filament::link
69
+                                        color="primary"
70
+                                        target="_blank"
71
+                                        icon="heroicon-o-arrow-top-right-on-square"
72
+                                        :icon-position="\Filament\Support\Enums\IconPosition::After"
73
+                                        :icon-size="\Filament\Support\Enums\IconSize::Small"
74
+                                        href="{{ \App\Filament\Company\Pages\Reports\IncomeStatement::getUrl([
75
+                                            'startDate' => $typeAccountCell['start_date'],
76
+                                            'endDate' => $typeAccountCell['end_date']
77
+                                        ]) }}"
78
+                                    >
79
+                                        {{ $typeAccountCell['name'] }}
80
+                                    </x-filament::link>
81
+                                @elseif(isset($typeAccountCell['id']) && isset($typeAccountCell['start_date']) && isset($typeAccountCell['end_date']))
82
+                                    <x-filament::link
83
+                                        color="primary"
84
+                                        target="_blank"
85
+                                        icon="heroicon-o-arrow-top-right-on-square"
86
+                                        :icon-position="\Filament\Support\Enums\IconPosition::After"
87
+                                        :icon-size="\Filament\Support\Enums\IconSize::Small"
88
+                                        href="{{ \App\Filament\Company\Pages\Reports\AccountTransactions::getUrl([
89
+                                            'startDate' => $typeAccountCell['start_date'],
90
+                                            'endDate' => $typeAccountCell['end_date'],
91
+                                            'selectedAccount' => $typeAccountCell['id']
92
+                                        ]) }}"
93
+                                    >
94
+                                        {{ $typeAccountCell['name'] }}
95
+                                    </x-filament::link>
96
+                                @else
97
+                                    {{ $typeAccountCell['name'] }}
98
+                                @endif
99
+                            @else
100
+                                {{ $typeAccountCell }}
101
+                            @endif
102
+                        </x-company.tables.cell>
103
+                    @endforeach
104
+                </tr>
105
+            @endforeach
106
+            <tr>
107
+                @foreach($accountType->summary as $accountTypeSummaryIndex => $accountTypeSummaryCell)
108
+                    <x-company.tables.cell :alignment-class="$report->getAlignmentClass($accountTypeSummaryIndex)"
109
+                                           indent="true" bold="true">
110
+                        {{ $accountTypeSummaryCell }}
111
+                    </x-company.tables.cell>
112
+                @endforeach
113
+            </tr>
114
+        @endforeach
115
+        <tr>
116
+            @foreach($accountCategory->summary as $accountCategorySummaryIndex => $accountCategorySummaryCell)
117
+                <x-company.tables.cell :alignment-class="$report->getAlignmentClass($accountCategorySummaryIndex)"
118
+                                       bold="true">
119
+                    {{ $accountCategorySummaryCell }}
120
+                </x-company.tables.cell>
121
+            @endforeach
122
+        </tr>
123
+        <tr>
124
+            <td colspan="{{ count($report->getHeaders()) }}">
125
+                <div class="min-h-12"></div>
126
+            </td>
127
+        </tr>
128
+        </tbody>
129
+    @endforeach
130
+    @foreach($report->getOverview() as $overviewCategory)
131
+        <tbody class="divide-y divide-gray-200 whitespace-nowrap dark:divide-white/5">
132
+        <x-company.tables.category-header :category-headers="$overviewCategory->header"
133
+                                          :alignment-class="[$report, 'getAlignmentClass']"/>
134
+        @foreach($overviewCategory->data as $overviewAccount)
135
+            <tr>
136
+                @foreach($overviewAccount as $overviewIndex => $overviewCell)
137
+                    <x-company.tables.cell :alignment-class="$report->getAlignmentClass($overviewIndex)">
138
+                        @if(is_array($overviewCell) && isset($overviewCell['name']))
139
+                            @if(isset($overviewCell['id']) && isset($overviewCell['start_date']) && isset($overviewCell['end_date']))
140
+                                <x-filament::link
141
+                                    color="primary"
142
+                                    target="_blank"
143
+                                    icon="heroicon-o-arrow-top-right-on-square"
144
+                                    :icon-position="\Filament\Support\Enums\IconPosition::After"
145
+                                    :icon-size="\Filament\Support\Enums\IconSize::Small"
146
+                                    href="{{ \App\Filament\Company\Pages\Reports\AccountTransactions::getUrl([
147
+                                            'startDate' => $overviewCell['start_date'],
148
+                                            'endDate' => $overviewCell['end_date'],
149
+                                            'selectedAccount' => $overviewCell['id']
150
+                                        ]) }}"
151
+                                >
152
+                                    {{ $overviewCell['name'] }}
153
+                                </x-filament::link>
154
+                            @else
155
+                                {{ $overviewCell['name'] }}
156
+                            @endif
157
+                        @else
158
+                            {{ $overviewCell }}
159
+                        @endif
160
+                    </x-company.tables.cell>
161
+                @endforeach
162
+            </tr>
163
+        @endforeach
164
+        <tr>
165
+            @foreach($overviewCategory->summary as $overviewSummaryIndex => $overviewSummaryCell)
166
+                <x-company.tables.cell :alignment-class="$report->getAlignmentClass($overviewSummaryIndex)" bold="true">
167
+                    {{ $overviewSummaryCell }}
168
+                </x-company.tables.cell>
169
+            @endforeach
170
+        </tr>
171
+        @if($overviewCategory->header['account_name'] === 'Starting Balance')
172
+            <!-- Insert Gross Cash Inflow, Gross Cash Outflow, and Net Cash Change here -->
173
+            @foreach($report->getSummary() as $summaryItem)
174
+                <tr>
175
+                    <x-company.tables.cell :alignment-class="$report->getAlignmentClass('account_name')"
176
+                                           :bold="$loop->last">
177
+                        {{ $summaryItem['label'] }}
178
+                    </x-company.tables.cell>
179
+                    <x-company.tables.cell :alignment-class="$report->getAlignmentClass('net_movement')"
180
+                                           :bold="$loop->last" :underline-bold="$loop->last"
181
+                                           :underline-thin="$loop->remaining === 1">
182
+                        {{ $summaryItem['value'] }}
183
+                    </x-company.tables.cell>
184
+                </tr>
185
+            @endforeach
186
+        @endif
187
+        </tbody>
188
+    @endforeach
189
+    <x-company.tables.footer :totals="$report->getOverallTotals()" :alignment-class="[$report, 'getAlignmentClass']"/>
190
+</table>

+ 1
- 1
resources/views/filament/company/pages/reports/cash-flow-statement.blade.php ファイルの表示

@@ -79,7 +79,7 @@
79 79
             @if($activeTab === 'summary')
80 80
                 <x-company.tables.reports.income-statement-summary :report="$this->report"/>
81 81
             @elseif($activeTab === 'details')
82
-                <x-company.tables.reports.balance-sheet :report="$this->report"/>
82
+                <x-company.tables.reports.cash-flow-statement :report="$this->report"/>
83 83
             @endif
84 84
         @endif
85 85
     </x-company.tables.container>

読み込み中…
キャンセル
保存