Andrew Wallo 6 meses atrás
pai
commit
325dad7121

+ 136
- 21
app/Filament/Company/Pages/Accounting/AccountChart.php Ver arquivo

@@ -3,15 +3,17 @@
3 3
 namespace App\Filament\Company\Pages\Accounting;
4 4
 
5 5
 use App\Enums\Accounting\AccountCategory;
6
+use App\Enums\Banking\BankAccountType;
7
+use App\Filament\Forms\Components\CreateCurrencySelect;
6 8
 use App\Models\Accounting\Account;
7 9
 use App\Models\Accounting\AccountSubtype;
8 10
 use App\Utilities\Accounting\AccountCode;
9
-use App\Utilities\Currency\CurrencyAccessor;
10 11
 use Filament\Actions\Action;
11 12
 use Filament\Actions\CreateAction;
12 13
 use Filament\Actions\EditAction;
13 14
 use Filament\Forms\Components\Checkbox;
14 15
 use Filament\Forms\Components\Component;
16
+use Filament\Forms\Components\Group;
15 17
 use Filament\Forms\Components\Select;
16 18
 use Filament\Forms\Components\Textarea;
17 19
 use Filament\Forms\Components\TextInput;
@@ -21,6 +23,8 @@ use Filament\Forms\Set;
21 23
 use Filament\Pages\Page;
22 24
 use Filament\Support\Enums\MaxWidth;
23 25
 use Illuminate\Support\Collection;
26
+use Illuminate\Support\Facades\Auth;
27
+use Illuminate\Validation\Rules\Unique;
24 28
 use Livewire\Attributes\Computed;
25 29
 use Livewire\Attributes\Url;
26 30
 
@@ -39,6 +43,7 @@ class AccountChart extends Page
39 43
     {
40 44
         $action
41 45
             ->modal()
46
+            ->slideOver()
42 47
             ->modalWidth(MaxWidth::TwoExtraLarge);
43 48
     }
44 49
 
@@ -94,6 +99,7 @@ class AccountChart extends Page
94 99
                 $this->getTypeFormComponent($useActiveTab),
95 100
                 $this->getCodeFormComponent(),
96 101
                 $this->getNameFormComponent(),
102
+                ...$this->getBankAccountFormComponents(),
97 103
                 $this->getCurrencyFormComponent(),
98 104
                 $this->getDescriptionFormComponent(),
99 105
                 $this->getArchiveFormComponent(),
@@ -106,15 +112,17 @@ class AccountChart extends Page
106 112
             ->label('Type')
107 113
             ->required()
108 114
             ->live()
109
-            ->disabled(static function (string $operation): bool {
110
-                return $operation === 'edit';
111
-            })
115
+            ->disabledOn('edit')
112 116
             ->options($this->getChartSubtypeOptions($useActiveTab))
113 117
             ->afterStateUpdated(static function (?string $state, Set $set): void {
114 118
                 if ($state) {
115 119
                     $accountSubtype = AccountSubtype::find($state);
116 120
                     $generatedCode = AccountCode::generate($accountSubtype);
117 121
                     $set('code', $generatedCode);
122
+
123
+                    $set('is_bank_account', false);
124
+                    $set('bankAccount.type', null);
125
+                    $set('bankAccount.number', null);
118 126
                 }
119 127
             });
120 128
     }
@@ -124,11 +132,124 @@ class AccountChart extends Page
124 132
         return TextInput::make('code')
125 133
             ->label('Code')
126 134
             ->required()
135
+            ->hiddenOn('edit')
127 136
             ->validationAttribute('account code')
128 137
             ->unique(table: Account::class, column: 'code', ignoreRecord: true)
129 138
             ->validateAccountCode(static fn (Get $get) => $get('subtype_id'));
130 139
     }
131 140
 
141
+    protected function getBankAccountFormComponents(): array
142
+    {
143
+        return [
144
+            Checkbox::make('is_bank_account')
145
+                ->live()
146
+                ->visible(function (Get $get, string $operation) {
147
+                    if ($operation === 'edit') {
148
+                        return false;
149
+                    }
150
+
151
+                    $subtype = $get('subtype_id');
152
+                    if (empty($subtype)) {
153
+                        return false;
154
+                    }
155
+
156
+                    $accountSubtype = AccountSubtype::find($subtype);
157
+
158
+                    if (! $accountSubtype) {
159
+                        return false;
160
+                    }
161
+
162
+                    return in_array($accountSubtype->category, [
163
+                        AccountCategory::Asset,
164
+                        AccountCategory::Liability,
165
+                    ]) && $accountSubtype->multi_currency;
166
+                })
167
+                ->afterStateUpdated(static function ($state, Get $get, Set $set) {
168
+                    if ($state) {
169
+                        $subtypeId = $get('subtype_id');
170
+
171
+                        if (empty($subtypeId)) {
172
+                            return;
173
+                        }
174
+
175
+                        $subtype = AccountSubtype::find($subtypeId);
176
+
177
+                        if (! $subtype) {
178
+                            return;
179
+                        }
180
+
181
+                        // Set default bank account type based on account category
182
+                        if ($subtype->category === AccountCategory::Asset) {
183
+                            $set('bankAccount.type', BankAccountType::Depository->value);
184
+                        } elseif ($subtype->category === AccountCategory::Liability) {
185
+                            $set('bankAccount.type', BankAccountType::Credit->value);
186
+                        }
187
+                    } else {
188
+                        // Clear bank account fields
189
+                        $set('bankAccount.type', null);
190
+                        $set('bankAccount.number', null);
191
+                    }
192
+                }),
193
+            Group::make()
194
+                ->relationship('bankAccount')
195
+                ->schema([
196
+                    Select::make('type')
197
+                        ->label('Bank account type')
198
+                        ->options(function (Get $get) {
199
+                            $subtype = $get('../subtype_id');
200
+
201
+                            if (empty($subtype)) {
202
+                                return [];
203
+                            }
204
+
205
+                            $accountSubtype = AccountSubtype::find($subtype);
206
+
207
+                            if (! $accountSubtype) {
208
+                                return [];
209
+                            }
210
+
211
+                            if ($accountSubtype->category === AccountCategory::Asset) {
212
+                                return [
213
+                                    BankAccountType::Depository->value => BankAccountType::Depository->getLabel(),
214
+                                    BankAccountType::Investment->value => BankAccountType::Investment->getLabel(),
215
+                                ];
216
+                            } elseif ($accountSubtype->category === AccountCategory::Liability) {
217
+                                return [
218
+                                    BankAccountType::Credit->value => BankAccountType::Credit->getLabel(),
219
+                                    BankAccountType::Loan->value => BankAccountType::Loan->getLabel(),
220
+                                ];
221
+                            }
222
+
223
+                            return [];
224
+                        })
225
+                        ->searchable()
226
+                        ->columnSpan(1)
227
+                        ->disabledOn('edit')
228
+                        ->required(),
229
+                    TextInput::make('number')
230
+                        ->label('Bank account number')
231
+                        ->unique(ignoreRecord: true, modifyRuleUsing: static function (Unique $rule, $state) {
232
+                            $companyId = Auth::user()->currentCompany->id;
233
+
234
+                            return $rule->where('company_id', $companyId)->where('number', $state);
235
+                        })
236
+                        ->maxLength(20)
237
+                        ->validationAttribute('account number'),
238
+                ])
239
+                ->visible(static function (Get $get, ?Account $record, string $operation) {
240
+                    if ($operation === 'create') {
241
+                        return (bool) $get('is_bank_account');
242
+                    }
243
+
244
+                    if ($operation === 'edit' && $record) {
245
+                        return (bool) $record->bankAccount;
246
+                    }
247
+
248
+                    return false;
249
+                }),
250
+        ];
251
+    }
252
+
132 253
     protected function getNameFormComponent(): Component
133 254
     {
134 255
         return TextInput::make('name')
@@ -136,28 +257,24 @@ class AccountChart extends Page
136 257
             ->required();
137 258
     }
138 259
 
139
-    protected function getCurrencyFormComponent()
260
+    protected function getCurrencyFormComponent(): Component
140 261
     {
141
-        return Select::make('currency_code')
142
-            ->localizeLabel('Currency')
143
-            ->relationship('currency', 'name')
144
-            ->default(CurrencyAccessor::getDefaultCurrency())
145
-            ->preload()
146
-            ->searchable()
147
-            ->disabled(static function (string $operation): bool {
148
-                return $operation === 'edit';
149
-            })
262
+        return CreateCurrencySelect::make('currency_code')
263
+            ->disabledOn('edit')
264
+            ->required(false)
265
+            ->requiredIfAccepted('is_bank_account')
266
+            ->validationMessages([
267
+                'required_if_accepted' => 'The currency is required for bank accounts.',
268
+            ])
150 269
             ->visible(function (Get $get): bool {
151 270
                 return filled($get('subtype_id')) && AccountSubtype::find($get('subtype_id'))->multi_currency;
152
-            })
153
-            ->live();
271
+            });
154 272
     }
155 273
 
156 274
     protected function getDescriptionFormComponent(): Component
157 275
     {
158 276
         return Textarea::make('description')
159
-            ->label('Description')
160
-            ->autosize();
277
+            ->label('Description');
161 278
     }
162 279
 
163 280
     protected function getArchiveFormComponent(): Component
@@ -165,9 +282,7 @@ class AccountChart extends Page
165 282
         return Checkbox::make('archived')
166 283
             ->label('Archive account')
167 284
             ->helperText('Archived accounts will not be available for selection in transactions.')
168
-            ->hidden(static function (string $operation): bool {
169
-                return $operation === 'create';
170
-            });
285
+            ->hiddenOn('create');
171 286
     }
172 287
 
173 288
     private function getChartSubtypeOptions($useActiveTab = true): array

+ 11
- 12
app/Observers/AccountObserver.php Ver arquivo

@@ -5,7 +5,6 @@ namespace App\Observers;
5 5
 use App\Enums\Accounting\AccountCategory;
6 6
 use App\Enums\Accounting\AccountType;
7 7
 use App\Models\Accounting\Account;
8
-use App\Models\Accounting\AccountSubtype;
9 8
 use App\Utilities\Accounting\AccountCode;
10 9
 use App\Utilities\Currency\CurrencyAccessor;
11 10
 
@@ -13,33 +12,33 @@ class AccountObserver
13 12
 {
14 13
     public function creating(Account $account): void
15 14
     {
16
-        $this->setCategoryAndType($account, true);
17
-        $this->setCurrency($account);
15
+        $this->setCategoryAndType($account);
16
+        $this->ensureDefaultCurrency($account);
18 17
     }
19 18
 
20 19
     public function updating(Account $account): void
21 20
     {
22 21
         if ($account->isDirty('subtype_id')) {
23
-            $this->setCategoryAndType($account, false);
22
+            $this->setCategoryAndType($account);
24 23
         }
24
+
25
+        $this->ensureDefaultCurrency($account);
25 26
     }
26 27
 
27
-    private function setCategoryAndType(Account $account, bool $isCreating): void
28
+    private function setCategoryAndType(Account $account): void
28 29
     {
29
-        $subtype = $account->subtype_id ? AccountSubtype::find($account->subtype_id) : null;
30
-
31
-        if ($subtype) {
30
+        if ($subtype = $account->subtype) {
32 31
             $account->category = $subtype->category;
33 32
             $account->type = $subtype->type;
34
-        } elseif ($isCreating) {
33
+        } else {
35 34
             $account->category = AccountCategory::Asset;
36 35
             $account->type = AccountType::CurrentAsset;
37 36
         }
38 37
     }
39 38
 
40
-    private function setCurrency(Account $account): void
39
+    private function ensureDefaultCurrency(Account $account): void
41 40
     {
42
-        if ($account->currency_code === null && $account->subtype->multi_currency === false) {
41
+        if (! $account->currency_code) {
43 42
             $account->currency_code = CurrencyAccessor::getDefaultCurrency();
44 43
         }
45 44
     }
@@ -58,7 +57,7 @@ class AccountObserver
58 57
     {
59 58
         if (! $account->code) {
60 59
             $this->setAccountCode($account);
61
-            $account->save();
60
+            $account->saveQuietly();
62 61
         }
63 62
     }
64 63
 }

+ 4
- 2
app/ValueObjects/Money.php Ver arquivo

@@ -11,8 +11,10 @@ class Money
11 11
 
12 12
     public function __construct(
13 13
         private readonly int $amount,
14
-        private readonly string $currencyCode
15
-    ) {}
14
+        private ?string $currencyCode,
15
+    ) {
16
+        $this->currencyCode = $currencyCode ?: CurrencyAccessor::getDefaultCurrency();
17
+    }
16 18
 
17 19
     public function getAmount(): int
18 20
     {

+ 92
- 91
composer.lock Ver arquivo

@@ -497,16 +497,16 @@
497 497
         },
498 498
         {
499 499
             "name": "aws/aws-sdk-php",
500
-            "version": "3.342.16",
500
+            "version": "3.342.21",
501 501
             "source": {
502 502
                 "type": "git",
503 503
                 "url": "https://github.com/aws/aws-sdk-php.git",
504
-                "reference": "c7db59f47523f66205b4c429a69b6baf947d3f78"
504
+                "reference": "f4d501414c553ddeea2efc9c77f72e58bd899823"
505 505
             },
506 506
             "dist": {
507 507
                 "type": "zip",
508
-                "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/c7db59f47523f66205b4c429a69b6baf947d3f78",
509
-                "reference": "c7db59f47523f66205b4c429a69b6baf947d3f78",
508
+                "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/f4d501414c553ddeea2efc9c77f72e58bd899823",
509
+                "reference": "f4d501414c553ddeea2efc9c77f72e58bd899823",
510 510
                 "shasum": ""
511 511
             },
512 512
             "require": {
@@ -588,9 +588,9 @@
588 588
             "support": {
589 589
                 "forum": "https://github.com/aws/aws-sdk-php/discussions",
590 590
                 "issues": "https://github.com/aws/aws-sdk-php/issues",
591
-                "source": "https://github.com/aws/aws-sdk-php/tree/3.342.16"
591
+                "source": "https://github.com/aws/aws-sdk-php/tree/3.342.21"
592 592
             },
593
-            "time": "2025-03-28T18:09:10+00:00"
593
+            "time": "2025-04-04T18:20:53+00:00"
594 594
         },
595 595
         {
596 596
             "name": "aws/aws-sdk-php-laravel",
@@ -1733,16 +1733,16 @@
1733 1733
         },
1734 1734
         {
1735 1735
             "name": "filament/actions",
1736
-            "version": "v3.3.7",
1736
+            "version": "v3.3.8",
1737 1737
             "source": {
1738 1738
                 "type": "git",
1739 1739
                 "url": "https://github.com/filamentphp/actions.git",
1740
-                "reference": "ca09a74e9c71af94641e3f798467387039b82964"
1740
+                "reference": "9d348cdc0e1231f59e642c980e7bc43509bc4e44"
1741 1741
             },
1742 1742
             "dist": {
1743 1743
                 "type": "zip",
1744
-                "url": "https://api.github.com/repos/filamentphp/actions/zipball/ca09a74e9c71af94641e3f798467387039b82964",
1745
-                "reference": "ca09a74e9c71af94641e3f798467387039b82964",
1744
+                "url": "https://api.github.com/repos/filamentphp/actions/zipball/9d348cdc0e1231f59e642c980e7bc43509bc4e44",
1745
+                "reference": "9d348cdc0e1231f59e642c980e7bc43509bc4e44",
1746 1746
                 "shasum": ""
1747 1747
             },
1748 1748
             "require": {
@@ -1782,20 +1782,20 @@
1782 1782
                 "issues": "https://github.com/filamentphp/filament/issues",
1783 1783
                 "source": "https://github.com/filamentphp/filament"
1784 1784
             },
1785
-            "time": "2025-03-28T09:44:13+00:00"
1785
+            "time": "2025-04-02T09:54:03+00:00"
1786 1786
         },
1787 1787
         {
1788 1788
             "name": "filament/filament",
1789
-            "version": "v3.3.7",
1789
+            "version": "v3.3.8",
1790 1790
             "source": {
1791 1791
                 "type": "git",
1792 1792
                 "url": "https://github.com/filamentphp/panels.git",
1793
-                "reference": "556a09b9c4997fef72dae3e883759e1de14eb648"
1793
+                "reference": "d2b533f349d55ed2e7928536e28798286d85801d"
1794 1794
             },
1795 1795
             "dist": {
1796 1796
                 "type": "zip",
1797
-                "url": "https://api.github.com/repos/filamentphp/panels/zipball/556a09b9c4997fef72dae3e883759e1de14eb648",
1798
-                "reference": "556a09b9c4997fef72dae3e883759e1de14eb648",
1797
+                "url": "https://api.github.com/repos/filamentphp/panels/zipball/d2b533f349d55ed2e7928536e28798286d85801d",
1798
+                "reference": "d2b533f349d55ed2e7928536e28798286d85801d",
1799 1799
                 "shasum": ""
1800 1800
             },
1801 1801
             "require": {
@@ -1847,20 +1847,20 @@
1847 1847
                 "issues": "https://github.com/filamentphp/filament/issues",
1848 1848
                 "source": "https://github.com/filamentphp/filament"
1849 1849
             },
1850
-            "time": "2025-03-28T16:50:36+00:00"
1850
+            "time": "2025-04-02T09:55:12+00:00"
1851 1851
         },
1852 1852
         {
1853 1853
             "name": "filament/forms",
1854
-            "version": "v3.3.7",
1854
+            "version": "v3.3.8",
1855 1855
             "source": {
1856 1856
                 "type": "git",
1857 1857
                 "url": "https://github.com/filamentphp/forms.git",
1858
-                "reference": "973618ac41046a41370330ce68d5c2f8929a417a"
1858
+                "reference": "cd6f8f560e075e8a6b87fd728ef9089dab77d061"
1859 1859
             },
1860 1860
             "dist": {
1861 1861
                 "type": "zip",
1862
-                "url": "https://api.github.com/repos/filamentphp/forms/zipball/973618ac41046a41370330ce68d5c2f8929a417a",
1863
-                "reference": "973618ac41046a41370330ce68d5c2f8929a417a",
1862
+                "url": "https://api.github.com/repos/filamentphp/forms/zipball/cd6f8f560e075e8a6b87fd728ef9089dab77d061",
1863
+                "reference": "cd6f8f560e075e8a6b87fd728ef9089dab77d061",
1864 1864
                 "shasum": ""
1865 1865
             },
1866 1866
             "require": {
@@ -1903,11 +1903,11 @@
1903 1903
                 "issues": "https://github.com/filamentphp/filament/issues",
1904 1904
                 "source": "https://github.com/filamentphp/filament"
1905 1905
             },
1906
-            "time": "2025-03-28T16:51:14+00:00"
1906
+            "time": "2025-04-02T09:54:02+00:00"
1907 1907
         },
1908 1908
         {
1909 1909
             "name": "filament/infolists",
1910
-            "version": "v3.3.7",
1910
+            "version": "v3.3.8",
1911 1911
             "source": {
1912 1912
                 "type": "git",
1913 1913
                 "url": "https://github.com/filamentphp/infolists.git",
@@ -1958,16 +1958,16 @@
1958 1958
         },
1959 1959
         {
1960 1960
             "name": "filament/notifications",
1961
-            "version": "v3.3.7",
1961
+            "version": "v3.3.8",
1962 1962
             "source": {
1963 1963
                 "type": "git",
1964 1964
                 "url": "https://github.com/filamentphp/notifications.git",
1965
-                "reference": "25d37ce5c74fcd339490b1cf89c4a4d3db3eb87d"
1965
+                "reference": "d4bb90c77a3e88ab833cab71d36b185b3670a314"
1966 1966
             },
1967 1967
             "dist": {
1968 1968
                 "type": "zip",
1969
-                "url": "https://api.github.com/repos/filamentphp/notifications/zipball/25d37ce5c74fcd339490b1cf89c4a4d3db3eb87d",
1970
-                "reference": "25d37ce5c74fcd339490b1cf89c4a4d3db3eb87d",
1969
+                "url": "https://api.github.com/repos/filamentphp/notifications/zipball/d4bb90c77a3e88ab833cab71d36b185b3670a314",
1970
+                "reference": "d4bb90c77a3e88ab833cab71d36b185b3670a314",
1971 1971
                 "shasum": ""
1972 1972
             },
1973 1973
             "require": {
@@ -2006,20 +2006,20 @@
2006 2006
                 "issues": "https://github.com/filamentphp/filament/issues",
2007 2007
                 "source": "https://github.com/filamentphp/filament"
2008 2008
             },
2009
-            "time": "2025-03-11T16:33:09+00:00"
2009
+            "time": "2025-04-02T09:55:26+00:00"
2010 2010
         },
2011 2011
         {
2012 2012
             "name": "filament/support",
2013
-            "version": "v3.3.7",
2013
+            "version": "v3.3.8",
2014 2014
             "source": {
2015 2015
                 "type": "git",
2016 2016
                 "url": "https://github.com/filamentphp/support.git",
2017
-                "reference": "cf3fa32f6e419ca768e88ac061dc3c47d01ed401"
2017
+                "reference": "19c40e9bd51e083705fa9a701b0e6d043ba1563c"
2018 2018
             },
2019 2019
             "dist": {
2020 2020
                 "type": "zip",
2021
-                "url": "https://api.github.com/repos/filamentphp/support/zipball/cf3fa32f6e419ca768e88ac061dc3c47d01ed401",
2022
-                "reference": "cf3fa32f6e419ca768e88ac061dc3c47d01ed401",
2021
+                "url": "https://api.github.com/repos/filamentphp/support/zipball/19c40e9bd51e083705fa9a701b0e6d043ba1563c",
2022
+                "reference": "19c40e9bd51e083705fa9a701b0e6d043ba1563c",
2023 2023
                 "shasum": ""
2024 2024
             },
2025 2025
             "require": {
@@ -2065,20 +2065,20 @@
2065 2065
                 "issues": "https://github.com/filamentphp/filament/issues",
2066 2066
                 "source": "https://github.com/filamentphp/filament"
2067 2067
             },
2068
-            "time": "2025-03-20T09:29:02+00:00"
2068
+            "time": "2025-04-02T09:54:54+00:00"
2069 2069
         },
2070 2070
         {
2071 2071
             "name": "filament/tables",
2072
-            "version": "v3.3.7",
2072
+            "version": "v3.3.8",
2073 2073
             "source": {
2074 2074
                 "type": "git",
2075 2075
                 "url": "https://github.com/filamentphp/tables.git",
2076
-                "reference": "c18ea4b16fd22879400c7729525bcb2f4a8b5642"
2076
+                "reference": "bc12d7b312aaa5bfe9b89f2040ca08735a5a4af1"
2077 2077
             },
2078 2078
             "dist": {
2079 2079
                 "type": "zip",
2080
-                "url": "https://api.github.com/repos/filamentphp/tables/zipball/c18ea4b16fd22879400c7729525bcb2f4a8b5642",
2081
-                "reference": "c18ea4b16fd22879400c7729525bcb2f4a8b5642",
2080
+                "url": "https://api.github.com/repos/filamentphp/tables/zipball/bc12d7b312aaa5bfe9b89f2040ca08735a5a4af1",
2081
+                "reference": "bc12d7b312aaa5bfe9b89f2040ca08735a5a4af1",
2082 2082
                 "shasum": ""
2083 2083
             },
2084 2084
             "require": {
@@ -2117,11 +2117,11 @@
2117 2117
                 "issues": "https://github.com/filamentphp/filament/issues",
2118 2118
                 "source": "https://github.com/filamentphp/filament"
2119 2119
             },
2120
-            "time": "2025-03-28T16:51:10+00:00"
2120
+            "time": "2025-04-02T09:54:54+00:00"
2121 2121
         },
2122 2122
         {
2123 2123
             "name": "filament/widgets",
2124
-            "version": "v3.3.7",
2124
+            "version": "v3.3.8",
2125 2125
             "source": {
2126 2126
                 "type": "git",
2127 2127
                 "url": "https://github.com/filamentphp/widgets.git",
@@ -2921,16 +2921,16 @@
2921 2921
         },
2922 2922
         {
2923 2923
             "name": "kirschbaum-development/eloquent-power-joins",
2924
-            "version": "4.2.2",
2924
+            "version": "4.2.3",
2925 2925
             "source": {
2926 2926
                 "type": "git",
2927 2927
                 "url": "https://github.com/kirschbaum-development/eloquent-power-joins.git",
2928
-                "reference": "a307fab78c291526fba754e6ac8a86f7bd58d45d"
2928
+                "reference": "d04e06b12e5e7864c303b8a8c6045bfcd4e2c641"
2929 2929
             },
2930 2930
             "dist": {
2931 2931
                 "type": "zip",
2932
-                "url": "https://api.github.com/repos/kirschbaum-development/eloquent-power-joins/zipball/a307fab78c291526fba754e6ac8a86f7bd58d45d",
2933
-                "reference": "a307fab78c291526fba754e6ac8a86f7bd58d45d",
2932
+                "url": "https://api.github.com/repos/kirschbaum-development/eloquent-power-joins/zipball/d04e06b12e5e7864c303b8a8c6045bfcd4e2c641",
2933
+                "reference": "d04e06b12e5e7864c303b8a8c6045bfcd4e2c641",
2934 2934
                 "shasum": ""
2935 2935
             },
2936 2936
             "require": {
@@ -2978,9 +2978,9 @@
2978 2978
             ],
2979 2979
             "support": {
2980 2980
                 "issues": "https://github.com/kirschbaum-development/eloquent-power-joins/issues",
2981
-                "source": "https://github.com/kirschbaum-development/eloquent-power-joins/tree/4.2.2"
2981
+                "source": "https://github.com/kirschbaum-development/eloquent-power-joins/tree/4.2.3"
2982 2982
             },
2983
-            "time": "2025-03-08T01:26:00+00:00"
2983
+            "time": "2025-04-01T14:41:56+00:00"
2984 2984
         },
2985 2985
         {
2986 2986
             "name": "knplabs/knp-snappy",
@@ -3450,16 +3450,16 @@
3450 3450
         },
3451 3451
         {
3452 3452
             "name": "laravel/socialite",
3453
-            "version": "v5.18.0",
3453
+            "version": "v5.19.0",
3454 3454
             "source": {
3455 3455
                 "type": "git",
3456 3456
                 "url": "https://github.com/laravel/socialite.git",
3457
-                "reference": "7809dc71250e074cd42970f0f803f2cddc04c5de"
3457
+                "reference": "c40f843c5643fb6b089e46ce9794b8408bf08319"
3458 3458
             },
3459 3459
             "dist": {
3460 3460
                 "type": "zip",
3461
-                "url": "https://api.github.com/repos/laravel/socialite/zipball/7809dc71250e074cd42970f0f803f2cddc04c5de",
3462
-                "reference": "7809dc71250e074cd42970f0f803f2cddc04c5de",
3461
+                "url": "https://api.github.com/repos/laravel/socialite/zipball/c40f843c5643fb6b089e46ce9794b8408bf08319",
3462
+                "reference": "c40f843c5643fb6b089e46ce9794b8408bf08319",
3463 3463
                 "shasum": ""
3464 3464
             },
3465 3465
             "require": {
@@ -3476,7 +3476,7 @@
3476 3476
             "require-dev": {
3477 3477
                 "mockery/mockery": "^1.0",
3478 3478
                 "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0|^8.0|^9.0|^10.0",
3479
-                "phpstan/phpstan": "^1.10",
3479
+                "phpstan/phpstan": "^1.12.23",
3480 3480
                 "phpunit/phpunit": "^8.0|^9.3|^10.4|^11.5"
3481 3481
             },
3482 3482
             "type": "library",
@@ -3518,7 +3518,7 @@
3518 3518
                 "issues": "https://github.com/laravel/socialite/issues",
3519 3519
                 "source": "https://github.com/laravel/socialite"
3520 3520
             },
3521
-            "time": "2025-02-11T13:38:19+00:00"
3521
+            "time": "2025-03-27T17:26:42+00:00"
3522 3522
         },
3523 3523
         {
3524 3524
             "name": "laravel/tinker",
@@ -4742,16 +4742,16 @@
4742 4742
         },
4743 4743
         {
4744 4744
             "name": "nesbot/carbon",
4745
-            "version": "3.8.6",
4745
+            "version": "3.9.0",
4746 4746
             "source": {
4747 4747
                 "type": "git",
4748 4748
                 "url": "https://github.com/CarbonPHP/carbon.git",
4749
-                "reference": "ff2f20cf83bd4d503720632ce8a426dc747bf7fd"
4749
+                "reference": "6d16a8a015166fe54e22c042e0805c5363aef50d"
4750 4750
             },
4751 4751
             "dist": {
4752 4752
                 "type": "zip",
4753
-                "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/ff2f20cf83bd4d503720632ce8a426dc747bf7fd",
4754
-                "reference": "ff2f20cf83bd4d503720632ce8a426dc747bf7fd",
4753
+                "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/6d16a8a015166fe54e22c042e0805c5363aef50d",
4754
+                "reference": "6d16a8a015166fe54e22c042e0805c5363aef50d",
4755 4755
                 "shasum": ""
4756 4756
             },
4757 4757
             "require": {
@@ -4844,7 +4844,7 @@
4844 4844
                     "type": "tidelift"
4845 4845
                 }
4846 4846
             ],
4847
-            "time": "2025-02-20T17:33:38+00:00"
4847
+            "time": "2025-03-27T12:57:33+00:00"
4848 4848
         },
4849 4849
         {
4850 4850
             "name": "nette/schema",
@@ -4910,16 +4910,16 @@
4910 4910
         },
4911 4911
         {
4912 4912
             "name": "nette/utils",
4913
-            "version": "v4.0.5",
4913
+            "version": "v4.0.6",
4914 4914
             "source": {
4915 4915
                 "type": "git",
4916 4916
                 "url": "https://github.com/nette/utils.git",
4917
-                "reference": "736c567e257dbe0fcf6ce81b4d6dbe05c6899f96"
4917
+                "reference": "ce708655043c7050eb050df361c5e313cf708309"
4918 4918
             },
4919 4919
             "dist": {
4920 4920
                 "type": "zip",
4921
-                "url": "https://api.github.com/repos/nette/utils/zipball/736c567e257dbe0fcf6ce81b4d6dbe05c6899f96",
4922
-                "reference": "736c567e257dbe0fcf6ce81b4d6dbe05c6899f96",
4921
+                "url": "https://api.github.com/repos/nette/utils/zipball/ce708655043c7050eb050df361c5e313cf708309",
4922
+                "reference": "ce708655043c7050eb050df361c5e313cf708309",
4923 4923
                 "shasum": ""
4924 4924
             },
4925 4925
             "require": {
@@ -4990,9 +4990,9 @@
4990 4990
             ],
4991 4991
             "support": {
4992 4992
                 "issues": "https://github.com/nette/utils/issues",
4993
-                "source": "https://github.com/nette/utils/tree/v4.0.5"
4993
+                "source": "https://github.com/nette/utils/tree/v4.0.6"
4994 4994
             },
4995
-            "time": "2024-08-07T15:39:19+00:00"
4995
+            "time": "2025-03-30T21:06:30+00:00"
4996 4996
         },
4997 4997
         {
4998 4998
             "name": "nikic/php-parser",
@@ -9977,38 +9977,39 @@
9977 9977
         },
9978 9978
         {
9979 9979
             "name": "nunomaduro/collision",
9980
-            "version": "v8.7.0",
9980
+            "version": "v8.8.0",
9981 9981
             "source": {
9982 9982
                 "type": "git",
9983 9983
                 "url": "https://github.com/nunomaduro/collision.git",
9984
-                "reference": "586cb8181a257a2152b6a855ca8d9598878a1a26"
9984
+                "reference": "4cf9f3b47afff38b139fb79ce54fc71799022ce8"
9985 9985
             },
9986 9986
             "dist": {
9987 9987
                 "type": "zip",
9988
-                "url": "https://api.github.com/repos/nunomaduro/collision/zipball/586cb8181a257a2152b6a855ca8d9598878a1a26",
9989
-                "reference": "586cb8181a257a2152b6a855ca8d9598878a1a26",
9988
+                "url": "https://api.github.com/repos/nunomaduro/collision/zipball/4cf9f3b47afff38b139fb79ce54fc71799022ce8",
9989
+                "reference": "4cf9f3b47afff38b139fb79ce54fc71799022ce8",
9990 9990
                 "shasum": ""
9991 9991
             },
9992 9992
             "require": {
9993
-                "filp/whoops": "^2.17.0",
9993
+                "filp/whoops": "^2.18.0",
9994 9994
                 "nunomaduro/termwind": "^2.3.0",
9995 9995
                 "php": "^8.2.0",
9996
-                "symfony/console": "^7.2.1"
9996
+                "symfony/console": "^7.2.5"
9997 9997
             },
9998 9998
             "conflict": {
9999
-                "laravel/framework": "<11.39.1 || >=13.0.0",
10000
-                "phpunit/phpunit": "<11.5.3 || >=12.0.0"
9999
+                "laravel/framework": "<11.44.2 || >=13.0.0",
10000
+                "phpunit/phpunit": "<11.5.15 || >=13.0.0"
10001 10001
             },
10002 10002
             "require-dev": {
10003
-                "larastan/larastan": "^2.10.0",
10004
-                "laravel/framework": "^11.44.2",
10003
+                "brianium/paratest": "^7.8.3",
10004
+                "larastan/larastan": "^3.2",
10005
+                "laravel/framework": "^11.44.2 || ^12.6",
10005 10006
                 "laravel/pint": "^1.21.2",
10006 10007
                 "laravel/sail": "^1.41.0",
10007 10008
                 "laravel/sanctum": "^4.0.8",
10008 10009
                 "laravel/tinker": "^2.10.1",
10009
-                "orchestra/testbench-core": "^9.12.0",
10010
-                "pestphp/pest": "^3.7.4",
10011
-                "sebastian/environment": "^6.1.0 || ^7.2.0"
10010
+                "orchestra/testbench-core": "^9.12.0 || ^10.1",
10011
+                "pestphp/pest": "^3.8.0",
10012
+                "sebastian/environment": "^7.2.0 || ^8.0"
10012 10013
             },
10013 10014
             "type": "library",
10014 10015
             "extra": {
@@ -10071,28 +10072,28 @@
10071 10072
                     "type": "patreon"
10072 10073
                 }
10073 10074
             ],
10074
-            "time": "2025-03-14T22:37:40+00:00"
10075
+            "time": "2025-04-03T14:33:09+00:00"
10075 10076
         },
10076 10077
         {
10077 10078
             "name": "pestphp/pest",
10078
-            "version": "v3.7.5",
10079
+            "version": "v3.8.1",
10079 10080
             "source": {
10080 10081
                 "type": "git",
10081 10082
                 "url": "https://github.com/pestphp/pest.git",
10082
-                "reference": "4969526ef2841118aa9d8b13ae2dad40f3d91492"
10083
+                "reference": "6080f51a0b0830715c48ba0e7458b06907febfe5"
10083 10084
             },
10084 10085
             "dist": {
10085 10086
                 "type": "zip",
10086
-                "url": "https://api.github.com/repos/pestphp/pest/zipball/4969526ef2841118aa9d8b13ae2dad40f3d91492",
10087
-                "reference": "4969526ef2841118aa9d8b13ae2dad40f3d91492",
10087
+                "url": "https://api.github.com/repos/pestphp/pest/zipball/6080f51a0b0830715c48ba0e7458b06907febfe5",
10088
+                "reference": "6080f51a0b0830715c48ba0e7458b06907febfe5",
10088 10089
                 "shasum": ""
10089 10090
             },
10090 10091
             "require": {
10091 10092
                 "brianium/paratest": "^7.8.3",
10092
-                "nunomaduro/collision": "^8.7.0",
10093
+                "nunomaduro/collision": "^8.8.0",
10093 10094
                 "nunomaduro/termwind": "^2.3.0",
10094 10095
                 "pestphp/pest-plugin": "^3.0.0",
10095
-                "pestphp/pest-plugin-arch": "^3.0.0",
10096
+                "pestphp/pest-plugin-arch": "^3.1.0",
10096 10097
                 "pestphp/pest-plugin-mutate": "^3.0.5",
10097 10098
                 "php": "^8.2.0",
10098 10099
                 "phpunit/phpunit": "^11.5.15"
@@ -10171,7 +10172,7 @@
10171 10172
             ],
10172 10173
             "support": {
10173 10174
                 "issues": "https://github.com/pestphp/pest/issues",
10174
-                "source": "https://github.com/pestphp/pest/tree/v3.7.5"
10175
+                "source": "https://github.com/pestphp/pest/tree/v3.8.1"
10175 10176
             },
10176 10177
             "funding": [
10177 10178
                 {
@@ -10183,7 +10184,7 @@
10183 10184
                     "type": "github"
10184 10185
                 }
10185 10186
             ],
10186
-            "time": "2025-03-29T17:57:53+00:00"
10187
+            "time": "2025-04-03T16:35:58+00:00"
10187 10188
         },
10188 10189
         {
10189 10190
             "name": "pestphp/pest-plugin",
@@ -10257,16 +10258,16 @@
10257 10258
         },
10258 10259
         {
10259 10260
             "name": "pestphp/pest-plugin-arch",
10260
-            "version": "v3.0.0",
10261
+            "version": "v3.1.0",
10261 10262
             "source": {
10262 10263
                 "type": "git",
10263 10264
                 "url": "https://github.com/pestphp/pest-plugin-arch.git",
10264
-                "reference": "0a27e55a270cfe73d8cb70551b91002ee2cb64b0"
10265
+                "reference": "ebec636b97ee73936ee8485e15a59c3f5a4c21b2"
10265 10266
             },
10266 10267
             "dist": {
10267 10268
                 "type": "zip",
10268
-                "url": "https://api.github.com/repos/pestphp/pest-plugin-arch/zipball/0a27e55a270cfe73d8cb70551b91002ee2cb64b0",
10269
-                "reference": "0a27e55a270cfe73d8cb70551b91002ee2cb64b0",
10269
+                "url": "https://api.github.com/repos/pestphp/pest-plugin-arch/zipball/ebec636b97ee73936ee8485e15a59c3f5a4c21b2",
10270
+                "reference": "ebec636b97ee73936ee8485e15a59c3f5a4c21b2",
10270 10271
                 "shasum": ""
10271 10272
             },
10272 10273
             "require": {
@@ -10275,8 +10276,8 @@
10275 10276
                 "ta-tikoma/phpunit-architecture-test": "^0.8.4"
10276 10277
             },
10277 10278
             "require-dev": {
10278
-                "pestphp/pest": "^3.0.0",
10279
-                "pestphp/pest-dev-tools": "^3.0.0"
10279
+                "pestphp/pest": "^3.7.5",
10280
+                "pestphp/pest-dev-tools": "^3.4.0"
10280 10281
             },
10281 10282
             "type": "library",
10282 10283
             "extra": {
@@ -10311,7 +10312,7 @@
10311 10312
                 "unit"
10312 10313
             ],
10313 10314
             "support": {
10314
-                "source": "https://github.com/pestphp/pest-plugin-arch/tree/v3.0.0"
10315
+                "source": "https://github.com/pestphp/pest-plugin-arch/tree/v3.1.0"
10315 10316
             },
10316 10317
             "funding": [
10317 10318
                 {
@@ -10323,7 +10324,7 @@
10323 10324
                     "type": "github"
10324 10325
                 }
10325 10326
             ],
10326
-            "time": "2024-09-08T23:23:55+00:00"
10327
+            "time": "2025-03-30T17:28:50+00:00"
10327 10328
         },
10328 10329
         {
10329 10330
             "name": "pestphp/pest-plugin-livewire",

Carregando…
Cancelar
Salvar