Andrew Wallo 1 year ago
parent
commit
1eca389390

+ 57
- 29
README.md View File

5
 ![Screenshot 2023-12-06 at 3 28 46 AM](https://github.com/andrewdwallo/erpsaas/assets/104294090/33beed6c-3ff5-4819-a8ae-71feaa6b95da)
5
 ![Screenshot 2023-12-06 at 3 28 46 AM](https://github.com/andrewdwallo/erpsaas/assets/104294090/33beed6c-3ff5-4819-a8ae-71feaa6b95da)
6
 ![Screenshot 2023-12-07 at 11 12 30 PM](https://github.com/andrewdwallo/erpsaas/assets/104294090/bdef3b98-f456-4b70-bf76-4a5b435c0939)
6
 ![Screenshot 2023-12-07 at 11 12 30 PM](https://github.com/andrewdwallo/erpsaas/assets/104294090/bdef3b98-f456-4b70-bf76-4a5b435c0939)
7
 
7
 
8
-
9
 This repo is currently a work in progress — PRs and issues welcome!
8
 This repo is currently a work in progress — PRs and issues welcome!
10
 
9
 
11
 # Getting started
10
 # Getting started
12
 
11
 
13
 ## Installation
12
 ## Installation
14
 
13
 
15
-Please check the official laravel installation guide for server requirements before you start. [Official Documentation](https://laravel.com/docs/10.x)
14
+Please check the official laravel installation guide for server requirements before you
15
+start. [Official Documentation](https://laravel.com/docs/10.x)
16
 
16
 
17
 Clone the repository
17
 Clone the repository
18
 
18
 
74
 
74
 
75
     php artisan db:seed
75
     php artisan db:seed
76
 
76
 
77
-***Note*** : It's recommended to have a clean database before seeding. You can refresh your migrations at any point to clean the database by running the following command
77
+***Note***: It's recommended to have a clean database before seeding. You can reset your database to a clean state at
78
+any point by running the following command:
78
 
79
 
79
-    php artisan migrate:refresh
80
+    php artisan migrate:fresh
80
 
81
 
81
 ## Generating PDFs for Reports
82
 ## Generating PDFs for Reports
82
 
83
 
83
-To generate PDFs for reports, the application uses Laravel Snappy. The Laravel Snappy package is already included in the application, but you need to install Wkhtmltopdf separately.
84
+To generate PDFs for reports, the application uses Laravel Snappy. The Laravel Snappy package is already included in the
85
+application, but you need to install Wkhtmltopdf separately.
84
 
86
 
85
 ### Wkhtmltopdf Installation
87
 ### Wkhtmltopdf Installation
86
 
88
 
87
 1. **Download and install Wkhtmltopdf**
89
 1. **Download and install Wkhtmltopdf**
88
-   - [Wkhtmltopdf Downloads](https://wkhtmltopdf.org/downloads.html)
89
-   
90
-   - Alternatively, if you are using Homebrew on macOS, you can install it using the following command:
91
-     ```bash
92
-     brew install wkhtmltopdf
93
-     ```
90
+    - [Wkhtmltopdf Downloads](https://wkhtmltopdf.org/downloads.html)
91
+
92
+    - Alternatively, if you are using Homebrew on macOS, you can install it using the following command:
93
+      ```bash
94
+      brew install wkhtmltopdf
95
+      ```
94
 
96
 
95
 2. **Configure the binary paths**
97
 2. **Configure the binary paths**
96
-   - If needed, you can change the paths to the Wkhtmltopdf binaries in the Snappy configuration file (`config/snappy.php`).
98
+    - If needed, you can change the paths to the Wkhtmltopdf binaries in the Snappy configuration file (
99
+      `config/snappy.php`).
97
 
100
 
98
-For detailed installation instructions, refer to the [Laravel Snappy documentation](https://github.com/barryvdh/laravel-snappy).
101
+For detailed installation instructions, refer to
102
+the [Laravel Snappy documentation](https://github.com/barryvdh/laravel-snappy).
99
 
103
 
100
 ## Live Currency
104
 ## Live Currency
101
 
105
 
102
 ### Overview
106
 ### Overview
103
 
107
 
104
-This application offers support for real-time currency exchange rates. This feature is disabled by default. To enable it, you must first register for an API key at [ExchangeRate-API](https://www.exchangerate-api.com/). The application uses this service due to its generous provision of up to 1,500 free API calls per month, which should be enough for development and testing purposes.
108
+This application offers support for real-time currency exchange rates. This feature is disabled by default. To enable
109
+it, you must first register for an API key at [ExchangeRate-API](https://www.exchangerate-api.com/). The application
110
+uses this service due to its generous provision of up to 1,500 free API calls per month, which should be enough for
111
+development and testing purposes.
105
 
112
 
106
 **Disclaimer**: There is no affiliation between this application and ExchangeRate-API.
113
 **Disclaimer**: There is no affiliation between this application and ExchangeRate-API.
107
 
114
 
108
-Once you have your API key, you can enable the feature by setting the `CURRENCY_API_KEY` environment variable in your `.env` file.
115
+Once you have your API key, you can enable the feature by setting the `CURRENCY_API_KEY` environment variable in your
116
+`.env` file.
109
 
117
 
110
 ### Initial Setup
118
 ### Initial Setup
111
 
119
 
112
-After setting your API key in the `.env` file, it is essential to prepare your database to store the currency data. Start by running a fresh database migration:
120
+After setting your API key in the `.env` file, it is essential to prepare your database to store the currency data.
121
+Start by running a fresh database migration:
113
 
122
 
114
 ```bash
123
 ```bash
115
 php artisan migrate:fresh
124
 php artisan migrate:fresh
116
 ```
125
 ```
117
 
126
 
118
-This ensures that your database is in the correct state to store the currency information. Afterward, use the following command to generate and populate the Currency List with supported currencies for the Live Currency page:
127
+This ensures that your database is in the correct state to store the currency information. Afterward, use the following
128
+command to generate and populate the Currency List with supported currencies for the Live Currency page:
119
 
129
 
120
 ```bash
130
 ```bash
121
 php artisan currency:init
131
 php artisan currency:init
125
 
135
 
126
 ### Configuration
136
 ### Configuration
127
 
137
 
128
-Of course, you may use any service you wish to retrieve currency exchange rates. If you decide to use a different service, you can update the `config/services.php` file with your choice:
138
+Of course, you may use any service you wish to retrieve currency exchange rates. If you decide to use a different
139
+service, you can update the `config/services.php` file with your choice:
129
 
140
 
130
 ```php
141
 ```php
131
 'currency_api' => [
142
 'currency_api' => [
138
 
149
 
139
 ### Live Currency Page
150
 ### Live Currency Page
140
 
151
 
141
-Once enabled, the "Live Currency" feature provides access to a dedicated page in the application, listing all supported currencies from the configured exchange rate service. Users can view available currencies and update exchange rates for their company's currencies as needed.
152
+Once enabled, the "Live Currency" feature provides access to a dedicated page in the application, listing all supported
153
+currencies from the configured exchange rate service. Users can view available currencies and update exchange rates for
154
+their company's currencies as needed.
142
 
155
 
143
 ### Important Information
156
 ### Important Information
144
 
157
 
145
-- To use the currency exchange rate feature, you must first obtain an API key from a service provider. This application is configured to use a service that offers a free tier suitable for development and testing purposes.
146
-- Your API key is sensitive information and should be kept secret. Do not commit it to your repository or share it with anyone.
147
-- Note that API rate limits may apply depending on the service you choose. Make sure to review the terms for your chosen service.
158
+- To use the currency exchange rate feature, you must first obtain an API key from a service provider. This application
159
+  is configured to use a service that offers a free tier suitable for development and testing purposes.
160
+- Your API key is sensitive information and should be kept secret. Do not commit it to your repository or share it with
161
+  anyone.
162
+- Note that API rate limits may apply depending on the service you choose. Make sure to review the terms for your chosen
163
+  service.
148
 
164
 
149
 ## Automatic Translation
165
 ## Automatic Translation
150
 
166
 
151
-The application now supports automatic translation, leveraging machine translation services provided by AWS, as facilitated by the [andrewdwallo/transmatic](https://github.com/andrewdwallo/transmatic) package. This integration significantly enhances the application's accessibility for a global audience. The application currently offers support for several languages, including English, Arabic, German, Spanish, French, Indonesian, Italian, Dutch, Portuguese, Turkish, and Chinese, with English as the default language.
167
+The application now supports automatic translation, leveraging machine translation services provided by AWS, as
168
+facilitated by the [andrewdwallo/transmatic](https://github.com/andrewdwallo/transmatic) package. This integration
169
+significantly enhances the application's accessibility for a global audience. The application currently offers support
170
+for several languages, including English, Arabic, German, Spanish, French, Indonesian, Italian, Dutch, Portuguese,
171
+Turkish, and Chinese, with English as the default language.
152
 
172
 
153
 ### Configuration & Usage
173
 ### Configuration & Usage
154
 
174
 
155
 To utilize this feature for additional languages or custom translations:
175
 To utilize this feature for additional languages or custom translations:
156
-1. Follow the documentation provided in the [andrewdwallo/transmatic](https://github.com/andrewdwallo/transmatic) package.
176
+
177
+1. Follow the documentation provided in the [andrewdwallo/transmatic](https://github.com/andrewdwallo/transmatic)
178
+   package.
157
 2. Configure the package with your preferred translation service credentials.
179
 2. Configure the package with your preferred translation service credentials.
158
 3. Run the translation commands as per the package instructions to generate new translations.
180
 3. Run the translation commands as per the package instructions to generate new translations.
159
 
181
 
160
-Once you have configured the package, you may update the following method in the `app/Models/Setting/Localization.php` file to generate translations based on the selected language in the application UI:
182
+Once you have configured the package, you may update the following method in the `app/Models/Setting/Localization.php`
183
+file to generate translations based on the selected language in the application UI:
161
 
184
 
162
 Change to the following:
185
 Change to the following:
186
+
163
 ```php
187
 ```php
164
 public static function getAllLanguages(): array
188
 public static function getAllLanguages(): array
165
 {
189
 {
170
 ## Dependencies
194
 ## Dependencies
171
 
195
 
172
 - [filamentphp/filament](https://github.com/filamentphp/filament) - A collection of beautiful full-stack components
196
 - [filamentphp/filament](https://github.com/filamentphp/filament) - A collection of beautiful full-stack components
173
-- [andrewdwallo/filament-companies](https://github.com/andrewdwallo/filament-companies) - A complete authentication system kit based on companies built for Filament
174
-- [andrewdwallo/transmatic](https://github.com/andrewdwallo/transmatic) - A package for automatic translation using machine translation services
175
-- [akaunting/laravel-money](https://github.com/akaunting/laravel-money) - Currency formatting and conversion package for Laravel
197
+- [andrewdwallo/filament-companies](https://github.com/andrewdwallo/filament-companies) - A complete authentication
198
+  system kit based on companies built for Filament
199
+- [andrewdwallo/transmatic](https://github.com/andrewdwallo/transmatic) - A package for automatic translation using
200
+  machine translation services
201
+- [akaunting/laravel-money](https://github.com/akaunting/laravel-money) - Currency formatting and conversion package for
202
+  Laravel
176
 - [squirephp/squire](https://github.com/squirephp/squire) - A library of static Eloquent models for common fixture data
203
 - [squirephp/squire](https://github.com/squirephp/squire) - A library of static Eloquent models for common fixture data
177
 
204
 
178
-***Note*** : It is recommended to read the documentation for all dependencies to get yourself familiar with how the application works.
205
+***Note*** : It is recommended to read the documentation for all dependencies to get yourself familiar with how the
206
+application works.
179
 
207
 
180
 ## License
208
 ## License
181
 
209
 

+ 7
- 5
app/Concerns/Blamable.php View File

11
     public static function bootBlamable(): void
11
     public static function bootBlamable(): void
12
     {
12
     {
13
         static::creating(static function ($model) {
13
         static::creating(static function ($model) {
14
-            $auth = Auth::id();
15
-            $model->created_by = $auth;
16
-            $model->updated_by = $auth;
14
+            if (Auth::check() && $authId = Auth::id()) {
15
+                $model->created_by = $model->created_by ?? $authId;
16
+                $model->updated_by = $model->updated_by ?? $authId;
17
+            }
17
         });
18
         });
18
 
19
 
19
         static::updating(static function ($model) {
20
         static::updating(static function ($model) {
20
-            $auth = Auth::id();
21
-            $model->updated_by = $auth;
21
+            if (Auth::check() && $authId = Auth::id()) {
22
+                $model->updated_by = $authId;
23
+            }
22
         });
24
         });
23
     }
25
     }
24
 
26
 

+ 5
- 1
app/Concerns/CompanyOwned.php View File

22
                     session(['current_company_id' => $companyId]);
22
                     session(['current_company_id' => $companyId]);
23
                 }
23
                 }
24
 
24
 
25
+                if (! $companyId) {
26
+                    $companyId = Auth::user()->currentCompany->id;
27
+                }
28
+
25
                 if ($companyId) {
29
                 if ($companyId) {
26
                     $model->company_id = $companyId;
30
                     $model->company_id = $companyId;
27
                 } else {
31
                 } else {
28
                     Log::error('CurrentCompanyScope: No company_id found for user ' . Auth::id());
32
                     Log::error('CurrentCompanyScope: No company_id found for user ' . Auth::id());
29
 
33
 
30
-                    throw new ModelNotFoundException('CurrentCompanyScope: No company_id set in the session or on the user.');
34
+                    throw new ModelNotFoundException('CurrentCompanyScope: No company_id set in the session, user, or database.');
31
                 }
35
                 }
32
             }
36
             }
33
         });
37
         });

+ 0
- 14
app/Filament/Company/Pages/Concerns/HasDeferredFiltersForm.php View File

62
     public function updatedFilters(): void
62
     public function updatedFilters(): void
63
     {
63
     {
64
         $this->deferredFilters = $this->filters;
64
         $this->deferredFilters = $this->filters;
65
-
66
-        $this->handleFilterUpdates();
67
     }
65
     }
68
 
66
 
69
     protected function isValidDate($date): bool
67
     protected function isValidDate($date): bool
71
         return strtotime($date) !== false;
69
         return strtotime($date) !== false;
72
     }
70
     }
73
 
71
 
74
-    protected function handleFilterUpdates(): void
75
-    {
76
-        //
77
-    }
78
-
79
     public function applyFilters(): void
72
     public function applyFilters(): void
80
     {
73
     {
81
         $this->filters = $this->deferredFilters;
74
         $this->filters = $this->deferredFilters;
82
 
75
 
83
-        $this->handleFilterUpdates();
84
-
85
         $this->loadReportData();
76
         $this->loadReportData();
86
     }
77
     }
87
 
78
 
185
             }
176
             }
186
         }
177
         }
187
     }
178
     }
188
-
189
-    protected function isDateFilter($value): bool
190
-    {
191
-        return $value instanceof Carbon || strtotime($value) !== false;
192
-    }
193
 }
179
 }

+ 6
- 5
app/Filament/Company/Pages/Reports/AccountTransactions.php View File

14
 use Filament\Forms\Components\Select;
14
 use Filament\Forms\Components\Select;
15
 use Filament\Forms\Form;
15
 use Filament\Forms\Form;
16
 use Filament\Support\Enums\Alignment;
16
 use Filament\Support\Enums\Alignment;
17
+use Filament\Support\Enums\MaxWidth;
17
 use Filament\Tables\Actions\Action;
18
 use Filament\Tables\Actions\Action;
18
 use Guava\FilamentClusters\Forms\Cluster;
19
 use Guava\FilamentClusters\Forms\Cluster;
19
 use Illuminate\Contracts\Support\Htmlable;
20
 use Illuminate\Contracts\Support\Htmlable;
38
         $this->exportService = $exportService;
39
         $this->exportService = $exportService;
39
     }
40
     }
40
 
41
 
42
+    public function getMaxContentWidth(): MaxWidth | string | null
43
+    {
44
+        return 'max-w-[90rem]';
45
+    }
46
+
41
     protected function initializeDefaultFilters(): void
47
     protected function initializeDefaultFilters(): void
42
     {
48
     {
43
         if (empty($this->getFilterState('selectedAccount'))) {
49
         if (empty($this->getFilterState('selectedAccount'))) {
45
         }
51
         }
46
     }
52
     }
47
 
53
 
48
-    protected function extraQueryStrings(): array
49
-    {
50
-        return ['selectedAccount'];
51
-    }
52
-
53
     /**
54
     /**
54
      * @return array<Column>
55
      * @return array<Column>
55
      */
56
      */

+ 8
- 0
app/Scopes/CurrentCompanyScope.php View File

16
      */
16
      */
17
     public function apply(Builder $builder, Model $model): void
17
     public function apply(Builder $builder, Model $model): void
18
     {
18
     {
19
+        if (app()->runningInConsole()) {
20
+            return;
21
+        }
22
+
19
         $companyId = session('current_company_id');
23
         $companyId = session('current_company_id');
20
 
24
 
21
         if (! $companyId && Auth::check() && Auth::user()->currentCompany) {
25
         if (! $companyId && Auth::check() && Auth::user()->currentCompany) {
23
             session(['current_company_id' => $companyId]);
27
             session(['current_company_id' => $companyId]);
24
         }
28
         }
25
 
29
 
30
+        if (! $companyId) {
31
+            $companyId = Auth::user()->currentCompany->id;
32
+        }
33
+
26
         if ($companyId) {
34
         if ($companyId) {
27
             $builder->where("{$model->getTable()}.company_id", $companyId);
35
             $builder->where("{$model->getTable()}.company_id", $companyId);
28
         } else {
36
         } else {

+ 5
- 2
app/Services/ReportService.php View File

274
             }
274
             }
275
 
275
 
276
             if ($category === AccountCategory::Equity) {
276
             if ($category === AccountCategory::Equity) {
277
+                $modifiedStartDate = Carbon::parse($this->accountService->getEarliestTransactionDate())->startOfYear()->toDateString();
278
+                $modifiedEndDate = Carbon::parse($startDate)->subYear()->endOfYear()->toDateString();
279
+
277
                 $retainedEarningsAmount = $this->calculateRetainedEarnings($startDate)->getAmount();
280
                 $retainedEarningsAmount = $this->calculateRetainedEarnings($startDate)->getAmount();
278
                 $isCredit = $retainedEarningsAmount >= 0;
281
                 $isCredit = $retainedEarningsAmount >= 0;
279
 
282
 
287
                         'debit_balance' => $isCredit ? 0 : abs($retainedEarningsAmount),
290
                         'debit_balance' => $isCredit ? 0 : abs($retainedEarningsAmount),
288
                         'credit_balance' => $isCredit ? $retainedEarningsAmount : 0,
291
                         'credit_balance' => $isCredit ? $retainedEarningsAmount : 0,
289
                     ]),
292
                     ]),
290
-                    null,
291
-                    null,
293
+                    $modifiedStartDate,
294
+                    $modifiedEndDate,
292
                 );
295
                 );
293
             }
296
             }
294
 
297
 

+ 2
- 0
app/Transformers/TrialBalanceReportTransformer.php View File

46
                         'account_name' => [
46
                         'account_name' => [
47
                             'name' => $account->accountName,
47
                             'name' => $account->accountName,
48
                             'id' => $account->accountId ?? null,
48
                             'id' => $account->accountId ?? null,
49
+                            'start_date' => $account->startDate,
50
+                            'end_date' => $account->endDate,
49
                         ],
51
                         ],
50
                         'debit_balance' => $account->balance->debitBalance,
52
                         'debit_balance' => $account->balance->debitBalance,
51
                         'credit_balance' => $account->balance->creditBalance,
53
                         'credit_balance' => $account->balance->creditBalance,

+ 100
- 174
composer.lock View File

156
         },
156
         },
157
         {
157
         {
158
             "name": "andrewdwallo/filament-selectify",
158
             "name": "andrewdwallo/filament-selectify",
159
-            "version": "v2.0.8",
159
+            "version": "v2.0.9",
160
             "source": {
160
             "source": {
161
                 "type": "git",
161
                 "type": "git",
162
                 "url": "https://github.com/andrewdwallo/filament-selectify.git",
162
                 "url": "https://github.com/andrewdwallo/filament-selectify.git",
163
-                "reference": "53395a2db9c1c3afd819e0aa526a300b476db0db"
163
+                "reference": "2c01aae4f9ef9910b8746805ebd3ee6801aad57d"
164
             },
164
             },
165
             "dist": {
165
             "dist": {
166
                 "type": "zip",
166
                 "type": "zip",
167
-                "url": "https://api.github.com/repos/andrewdwallo/filament-selectify/zipball/53395a2db9c1c3afd819e0aa526a300b476db0db",
168
-                "reference": "53395a2db9c1c3afd819e0aa526a300b476db0db",
167
+                "url": "https://api.github.com/repos/andrewdwallo/filament-selectify/zipball/2c01aae4f9ef9910b8746805ebd3ee6801aad57d",
168
+                "reference": "2c01aae4f9ef9910b8746805ebd3ee6801aad57d",
169
                 "shasum": ""
169
                 "shasum": ""
170
             },
170
             },
171
             "require": {
171
             "require": {
214
             ],
214
             ],
215
             "support": {
215
             "support": {
216
                 "issues": "https://github.com/andrewdwallo/filament-selectify/issues",
216
                 "issues": "https://github.com/andrewdwallo/filament-selectify/issues",
217
-                "source": "https://github.com/andrewdwallo/filament-selectify/tree/v2.0.8"
217
+                "source": "https://github.com/andrewdwallo/filament-selectify/tree/v2.0.9"
218
             },
218
             },
219
-            "time": "2024-06-27T20:42:06+00:00"
219
+            "time": "2024-09-10T00:21:38+00:00"
220
         },
220
         },
221
         {
221
         {
222
             "name": "andrewdwallo/transmatic",
222
             "name": "andrewdwallo/transmatic",
302
         },
302
         },
303
         {
303
         {
304
             "name": "anourvalar/eloquent-serialize",
304
             "name": "anourvalar/eloquent-serialize",
305
-            "version": "1.2.23",
305
+            "version": "1.2.24",
306
             "source": {
306
             "source": {
307
                 "type": "git",
307
                 "type": "git",
308
                 "url": "https://github.com/AnourValar/eloquent-serialize.git",
308
                 "url": "https://github.com/AnourValar/eloquent-serialize.git",
309
-                "reference": "fd7bc1dc2c98fe705647ab4b81d13ea3d599ea1f"
309
+                "reference": "77e3fc7da44fa96b6148a1613dd76fe954a5f279"
310
             },
310
             },
311
             "dist": {
311
             "dist": {
312
                 "type": "zip",
312
                 "type": "zip",
313
-                "url": "https://api.github.com/repos/AnourValar/eloquent-serialize/zipball/fd7bc1dc2c98fe705647ab4b81d13ea3d599ea1f",
314
-                "reference": "fd7bc1dc2c98fe705647ab4b81d13ea3d599ea1f",
313
+                "url": "https://api.github.com/repos/AnourValar/eloquent-serialize/zipball/77e3fc7da44fa96b6148a1613dd76fe954a5f279",
314
+                "reference": "77e3fc7da44fa96b6148a1613dd76fe954a5f279",
315
                 "shasum": ""
315
                 "shasum": ""
316
             },
316
             },
317
             "require": {
317
             "require": {
362
             ],
362
             ],
363
             "support": {
363
             "support": {
364
                 "issues": "https://github.com/AnourValar/eloquent-serialize/issues",
364
                 "issues": "https://github.com/AnourValar/eloquent-serialize/issues",
365
-                "source": "https://github.com/AnourValar/eloquent-serialize/tree/1.2.23"
365
+                "source": "https://github.com/AnourValar/eloquent-serialize/tree/1.2.24"
366
             },
366
             },
367
-            "time": "2024-07-12T10:52:26+00:00"
367
+            "time": "2024-09-08T15:57:08+00:00"
368
         },
368
         },
369
         {
369
         {
370
             "name": "awcodes/filament-table-repeater",
370
             "name": "awcodes/filament-table-repeater",
497
         },
497
         },
498
         {
498
         {
499
             "name": "aws/aws-sdk-php",
499
             "name": "aws/aws-sdk-php",
500
-            "version": "3.321.6",
500
+            "version": "3.321.7",
501
             "source": {
501
             "source": {
502
                 "type": "git",
502
                 "type": "git",
503
                 "url": "https://github.com/aws/aws-sdk-php.git",
503
                 "url": "https://github.com/aws/aws-sdk-php.git",
504
-                "reference": "3dc53a79677dd1f0e682dfc05f9815901ec7bf58"
504
+                "reference": "c64ee32d80ec2ab5d8d6a0b77297c2d69602ef3b"
505
             },
505
             },
506
             "dist": {
506
             "dist": {
507
                 "type": "zip",
507
                 "type": "zip",
508
-                "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/3dc53a79677dd1f0e682dfc05f9815901ec7bf58",
509
-                "reference": "3dc53a79677dd1f0e682dfc05f9815901ec7bf58",
508
+                "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/c64ee32d80ec2ab5d8d6a0b77297c2d69602ef3b",
509
+                "reference": "c64ee32d80ec2ab5d8d6a0b77297c2d69602ef3b",
510
                 "shasum": ""
510
                 "shasum": ""
511
             },
511
             },
512
             "require": {
512
             "require": {
589
             "support": {
589
             "support": {
590
                 "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80",
590
                 "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80",
591
                 "issues": "https://github.com/aws/aws-sdk-php/issues",
591
                 "issues": "https://github.com/aws/aws-sdk-php/issues",
592
-                "source": "https://github.com/aws/aws-sdk-php/tree/3.321.6"
592
+                "source": "https://github.com/aws/aws-sdk-php/tree/3.321.7"
593
             },
593
             },
594
-            "time": "2024-09-06T18:06:38+00:00"
594
+            "time": "2024-09-09T18:09:23+00:00"
595
         },
595
         },
596
         {
596
         {
597
             "name": "aws/aws-sdk-php-laravel",
597
             "name": "aws/aws-sdk-php-laravel",
7681
         },
7681
         },
7682
         {
7682
         {
7683
             "name": "symfony/polyfill-ctype",
7683
             "name": "symfony/polyfill-ctype",
7684
-            "version": "v1.30.0",
7684
+            "version": "v1.31.0",
7685
             "source": {
7685
             "source": {
7686
                 "type": "git",
7686
                 "type": "git",
7687
                 "url": "https://github.com/symfony/polyfill-ctype.git",
7687
                 "url": "https://github.com/symfony/polyfill-ctype.git",
7688
-                "reference": "0424dff1c58f028c451efff2045f5d92410bd540"
7688
+                "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638"
7689
             },
7689
             },
7690
             "dist": {
7690
             "dist": {
7691
                 "type": "zip",
7691
                 "type": "zip",
7692
-                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/0424dff1c58f028c451efff2045f5d92410bd540",
7693
-                "reference": "0424dff1c58f028c451efff2045f5d92410bd540",
7692
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638",
7693
+                "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638",
7694
                 "shasum": ""
7694
                 "shasum": ""
7695
             },
7695
             },
7696
             "require": {
7696
             "require": {
7697
-                "php": ">=7.1"
7697
+                "php": ">=7.2"
7698
             },
7698
             },
7699
             "provide": {
7699
             "provide": {
7700
                 "ext-ctype": "*"
7700
                 "ext-ctype": "*"
7740
                 "portable"
7740
                 "portable"
7741
             ],
7741
             ],
7742
             "support": {
7742
             "support": {
7743
-                "source": "https://github.com/symfony/polyfill-ctype/tree/v1.30.0"
7743
+                "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0"
7744
             },
7744
             },
7745
             "funding": [
7745
             "funding": [
7746
                 {
7746
                 {
7756
                     "type": "tidelift"
7756
                     "type": "tidelift"
7757
                 }
7757
                 }
7758
             ],
7758
             ],
7759
-            "time": "2024-05-31T15:07:36+00:00"
7759
+            "time": "2024-09-09T11:45:10+00:00"
7760
         },
7760
         },
7761
         {
7761
         {
7762
             "name": "symfony/polyfill-intl-grapheme",
7762
             "name": "symfony/polyfill-intl-grapheme",
7763
-            "version": "v1.30.0",
7763
+            "version": "v1.31.0",
7764
             "source": {
7764
             "source": {
7765
                 "type": "git",
7765
                 "type": "git",
7766
                 "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
7766
                 "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
7767
-                "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a"
7767
+                "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe"
7768
             },
7768
             },
7769
             "dist": {
7769
             "dist": {
7770
                 "type": "zip",
7770
                 "type": "zip",
7771
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/64647a7c30b2283f5d49b874d84a18fc22054b7a",
7772
-                "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a",
7771
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",
7772
+                "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",
7773
                 "shasum": ""
7773
                 "shasum": ""
7774
             },
7774
             },
7775
             "require": {
7775
             "require": {
7776
-                "php": ">=7.1"
7776
+                "php": ">=7.2"
7777
             },
7777
             },
7778
             "suggest": {
7778
             "suggest": {
7779
                 "ext-intl": "For best performance"
7779
                 "ext-intl": "For best performance"
7818
                 "shim"
7818
                 "shim"
7819
             ],
7819
             ],
7820
             "support": {
7820
             "support": {
7821
-                "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.30.0"
7821
+                "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0"
7822
             },
7822
             },
7823
             "funding": [
7823
             "funding": [
7824
                 {
7824
                 {
7834
                     "type": "tidelift"
7834
                     "type": "tidelift"
7835
                 }
7835
                 }
7836
             ],
7836
             ],
7837
-            "time": "2024-05-31T15:07:36+00:00"
7837
+            "time": "2024-09-09T11:45:10+00:00"
7838
         },
7838
         },
7839
         {
7839
         {
7840
             "name": "symfony/polyfill-intl-idn",
7840
             "name": "symfony/polyfill-intl-idn",
7841
-            "version": "v1.30.0",
7841
+            "version": "v1.31.0",
7842
             "source": {
7842
             "source": {
7843
                 "type": "git",
7843
                 "type": "git",
7844
                 "url": "https://github.com/symfony/polyfill-intl-idn.git",
7844
                 "url": "https://github.com/symfony/polyfill-intl-idn.git",
7845
-                "reference": "a6e83bdeb3c84391d1dfe16f42e40727ce524a5c"
7845
+                "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773"
7846
             },
7846
             },
7847
             "dist": {
7847
             "dist": {
7848
                 "type": "zip",
7848
                 "type": "zip",
7849
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a6e83bdeb3c84391d1dfe16f42e40727ce524a5c",
7850
-                "reference": "a6e83bdeb3c84391d1dfe16f42e40727ce524a5c",
7849
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/c36586dcf89a12315939e00ec9b4474adcb1d773",
7850
+                "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773",
7851
                 "shasum": ""
7851
                 "shasum": ""
7852
             },
7852
             },
7853
             "require": {
7853
             "require": {
7854
-                "php": ">=7.1",
7855
-                "symfony/polyfill-intl-normalizer": "^1.10",
7856
-                "symfony/polyfill-php72": "^1.10"
7854
+                "php": ">=7.2",
7855
+                "symfony/polyfill-intl-normalizer": "^1.10"
7857
             },
7856
             },
7858
             "suggest": {
7857
             "suggest": {
7859
                 "ext-intl": "For best performance"
7858
                 "ext-intl": "For best performance"
7902
                 "shim"
7901
                 "shim"
7903
             ],
7902
             ],
7904
             "support": {
7903
             "support": {
7905
-                "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.30.0"
7904
+                "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.31.0"
7906
             },
7905
             },
7907
             "funding": [
7906
             "funding": [
7908
                 {
7907
                 {
7918
                     "type": "tidelift"
7917
                     "type": "tidelift"
7919
                 }
7918
                 }
7920
             ],
7919
             ],
7921
-            "time": "2024-05-31T15:07:36+00:00"
7920
+            "time": "2024-09-09T11:45:10+00:00"
7922
         },
7921
         },
7923
         {
7922
         {
7924
             "name": "symfony/polyfill-intl-normalizer",
7923
             "name": "symfony/polyfill-intl-normalizer",
7925
-            "version": "v1.30.0",
7924
+            "version": "v1.31.0",
7926
             "source": {
7925
             "source": {
7927
                 "type": "git",
7926
                 "type": "git",
7928
                 "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
7927
                 "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
7929
-                "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb"
7928
+                "reference": "3833d7255cc303546435cb650316bff708a1c75c"
7930
             },
7929
             },
7931
             "dist": {
7930
             "dist": {
7932
                 "type": "zip",
7931
                 "type": "zip",
7933
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/a95281b0be0d9ab48050ebd988b967875cdb9fdb",
7934
-                "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb",
7932
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c",
7933
+                "reference": "3833d7255cc303546435cb650316bff708a1c75c",
7935
                 "shasum": ""
7934
                 "shasum": ""
7936
             },
7935
             },
7937
             "require": {
7936
             "require": {
7938
-                "php": ">=7.1"
7937
+                "php": ">=7.2"
7939
             },
7938
             },
7940
             "suggest": {
7939
             "suggest": {
7941
                 "ext-intl": "For best performance"
7940
                 "ext-intl": "For best performance"
7983
                 "shim"
7982
                 "shim"
7984
             ],
7983
             ],
7985
             "support": {
7984
             "support": {
7986
-                "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.30.0"
7985
+                "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0"
7987
             },
7986
             },
7988
             "funding": [
7987
             "funding": [
7989
                 {
7988
                 {
7999
                     "type": "tidelift"
7998
                     "type": "tidelift"
8000
                 }
7999
                 }
8001
             ],
8000
             ],
8002
-            "time": "2024-05-31T15:07:36+00:00"
8001
+            "time": "2024-09-09T11:45:10+00:00"
8003
         },
8002
         },
8004
         {
8003
         {
8005
             "name": "symfony/polyfill-mbstring",
8004
             "name": "symfony/polyfill-mbstring",
8006
-            "version": "v1.30.0",
8005
+            "version": "v1.31.0",
8007
             "source": {
8006
             "source": {
8008
                 "type": "git",
8007
                 "type": "git",
8009
                 "url": "https://github.com/symfony/polyfill-mbstring.git",
8008
                 "url": "https://github.com/symfony/polyfill-mbstring.git",
8010
-                "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c"
8009
+                "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341"
8011
             },
8010
             },
8012
             "dist": {
8011
             "dist": {
8013
                 "type": "zip",
8012
                 "type": "zip",
8014
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fd22ab50000ef01661e2a31d850ebaa297f8e03c",
8015
-                "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c",
8013
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341",
8014
+                "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341",
8016
                 "shasum": ""
8015
                 "shasum": ""
8017
             },
8016
             },
8018
             "require": {
8017
             "require": {
8019
-                "php": ">=7.1"
8018
+                "php": ">=7.2"
8020
             },
8019
             },
8021
             "provide": {
8020
             "provide": {
8022
                 "ext-mbstring": "*"
8021
                 "ext-mbstring": "*"
8063
                 "shim"
8062
                 "shim"
8064
             ],
8063
             ],
8065
             "support": {
8064
             "support": {
8066
-                "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.30.0"
8065
+                "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0"
8067
             },
8066
             },
8068
             "funding": [
8067
             "funding": [
8069
                 {
8068
                 {
8079
                     "type": "tidelift"
8078
                     "type": "tidelift"
8080
                 }
8079
                 }
8081
             ],
8080
             ],
8082
-            "time": "2024-06-19T12:30:46+00:00"
8083
-        },
8084
-        {
8085
-            "name": "symfony/polyfill-php72",
8086
-            "version": "v1.30.0",
8087
-            "source": {
8088
-                "type": "git",
8089
-                "url": "https://github.com/symfony/polyfill-php72.git",
8090
-                "reference": "10112722600777e02d2745716b70c5db4ca70442"
8091
-            },
8092
-            "dist": {
8093
-                "type": "zip",
8094
-                "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/10112722600777e02d2745716b70c5db4ca70442",
8095
-                "reference": "10112722600777e02d2745716b70c5db4ca70442",
8096
-                "shasum": ""
8097
-            },
8098
-            "require": {
8099
-                "php": ">=7.1"
8100
-            },
8101
-            "type": "library",
8102
-            "extra": {
8103
-                "thanks": {
8104
-                    "name": "symfony/polyfill",
8105
-                    "url": "https://github.com/symfony/polyfill"
8106
-                }
8107
-            },
8108
-            "autoload": {
8109
-                "files": [
8110
-                    "bootstrap.php"
8111
-                ],
8112
-                "psr-4": {
8113
-                    "Symfony\\Polyfill\\Php72\\": ""
8114
-                }
8115
-            },
8116
-            "notification-url": "https://packagist.org/downloads/",
8117
-            "license": [
8118
-                "MIT"
8119
-            ],
8120
-            "authors": [
8121
-                {
8122
-                    "name": "Nicolas Grekas",
8123
-                    "email": "p@tchwork.com"
8124
-                },
8125
-                {
8126
-                    "name": "Symfony Community",
8127
-                    "homepage": "https://symfony.com/contributors"
8128
-                }
8129
-            ],
8130
-            "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
8131
-            "homepage": "https://symfony.com",
8132
-            "keywords": [
8133
-                "compatibility",
8134
-                "polyfill",
8135
-                "portable",
8136
-                "shim"
8137
-            ],
8138
-            "support": {
8139
-                "source": "https://github.com/symfony/polyfill-php72/tree/v1.30.0"
8140
-            },
8141
-            "funding": [
8142
-                {
8143
-                    "url": "https://symfony.com/sponsor",
8144
-                    "type": "custom"
8145
-                },
8146
-                {
8147
-                    "url": "https://github.com/fabpot",
8148
-                    "type": "github"
8149
-                },
8150
-                {
8151
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
8152
-                    "type": "tidelift"
8153
-                }
8154
-            ],
8155
-            "time": "2024-06-19T12:30:46+00:00"
8081
+            "time": "2024-09-09T11:45:10+00:00"
8156
         },
8082
         },
8157
         {
8083
         {
8158
             "name": "symfony/polyfill-php80",
8084
             "name": "symfony/polyfill-php80",
8159
-            "version": "v1.30.0",
8085
+            "version": "v1.31.0",
8160
             "source": {
8086
             "source": {
8161
                 "type": "git",
8087
                 "type": "git",
8162
                 "url": "https://github.com/symfony/polyfill-php80.git",
8088
                 "url": "https://github.com/symfony/polyfill-php80.git",
8163
-                "reference": "77fa7995ac1b21ab60769b7323d600a991a90433"
8089
+                "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8"
8164
             },
8090
             },
8165
             "dist": {
8091
             "dist": {
8166
                 "type": "zip",
8092
                 "type": "zip",
8167
-                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/77fa7995ac1b21ab60769b7323d600a991a90433",
8168
-                "reference": "77fa7995ac1b21ab60769b7323d600a991a90433",
8093
+                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8",
8094
+                "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8",
8169
                 "shasum": ""
8095
                 "shasum": ""
8170
             },
8096
             },
8171
             "require": {
8097
             "require": {
8172
-                "php": ">=7.1"
8098
+                "php": ">=7.2"
8173
             },
8099
             },
8174
             "type": "library",
8100
             "type": "library",
8175
             "extra": {
8101
             "extra": {
8216
                 "shim"
8142
                 "shim"
8217
             ],
8143
             ],
8218
             "support": {
8144
             "support": {
8219
-                "source": "https://github.com/symfony/polyfill-php80/tree/v1.30.0"
8145
+                "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0"
8220
             },
8146
             },
8221
             "funding": [
8147
             "funding": [
8222
                 {
8148
                 {
8232
                     "type": "tidelift"
8158
                     "type": "tidelift"
8233
                 }
8159
                 }
8234
             ],
8160
             ],
8235
-            "time": "2024-05-31T15:07:36+00:00"
8161
+            "time": "2024-09-09T11:45:10+00:00"
8236
         },
8162
         },
8237
         {
8163
         {
8238
             "name": "symfony/polyfill-php83",
8164
             "name": "symfony/polyfill-php83",
8239
-            "version": "v1.30.0",
8165
+            "version": "v1.31.0",
8240
             "source": {
8166
             "source": {
8241
                 "type": "git",
8167
                 "type": "git",
8242
                 "url": "https://github.com/symfony/polyfill-php83.git",
8168
                 "url": "https://github.com/symfony/polyfill-php83.git",
8243
-                "reference": "dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9"
8169
+                "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491"
8244
             },
8170
             },
8245
             "dist": {
8171
             "dist": {
8246
                 "type": "zip",
8172
                 "type": "zip",
8247
-                "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9",
8248
-                "reference": "dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9",
8173
+                "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/2fb86d65e2d424369ad2905e83b236a8805ba491",
8174
+                "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491",
8249
                 "shasum": ""
8175
                 "shasum": ""
8250
             },
8176
             },
8251
             "require": {
8177
             "require": {
8252
-                "php": ">=7.1"
8178
+                "php": ">=7.2"
8253
             },
8179
             },
8254
             "type": "library",
8180
             "type": "library",
8255
             "extra": {
8181
             "extra": {
8292
                 "shim"
8218
                 "shim"
8293
             ],
8219
             ],
8294
             "support": {
8220
             "support": {
8295
-                "source": "https://github.com/symfony/polyfill-php83/tree/v1.30.0"
8221
+                "source": "https://github.com/symfony/polyfill-php83/tree/v1.31.0"
8296
             },
8222
             },
8297
             "funding": [
8223
             "funding": [
8298
                 {
8224
                 {
8308
                     "type": "tidelift"
8234
                     "type": "tidelift"
8309
                 }
8235
                 }
8310
             ],
8236
             ],
8311
-            "time": "2024-06-19T12:35:24+00:00"
8237
+            "time": "2024-09-09T11:45:10+00:00"
8312
         },
8238
         },
8313
         {
8239
         {
8314
             "name": "symfony/polyfill-uuid",
8240
             "name": "symfony/polyfill-uuid",
8315
-            "version": "v1.30.0",
8241
+            "version": "v1.31.0",
8316
             "source": {
8242
             "source": {
8317
                 "type": "git",
8243
                 "type": "git",
8318
                 "url": "https://github.com/symfony/polyfill-uuid.git",
8244
                 "url": "https://github.com/symfony/polyfill-uuid.git",
8319
-                "reference": "2ba1f33797470debcda07fe9dce20a0003df18e9"
8245
+                "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2"
8320
             },
8246
             },
8321
             "dist": {
8247
             "dist": {
8322
                 "type": "zip",
8248
                 "type": "zip",
8323
-                "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/2ba1f33797470debcda07fe9dce20a0003df18e9",
8324
-                "reference": "2ba1f33797470debcda07fe9dce20a0003df18e9",
8249
+                "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/21533be36c24be3f4b1669c4725c7d1d2bab4ae2",
8250
+                "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2",
8325
                 "shasum": ""
8251
                 "shasum": ""
8326
             },
8252
             },
8327
             "require": {
8253
             "require": {
8328
-                "php": ">=7.1"
8254
+                "php": ">=7.2"
8329
             },
8255
             },
8330
             "provide": {
8256
             "provide": {
8331
                 "ext-uuid": "*"
8257
                 "ext-uuid": "*"
8371
                 "uuid"
8297
                 "uuid"
8372
             ],
8298
             ],
8373
             "support": {
8299
             "support": {
8374
-                "source": "https://github.com/symfony/polyfill-uuid/tree/v1.30.0"
8300
+                "source": "https://github.com/symfony/polyfill-uuid/tree/v1.31.0"
8375
             },
8301
             },
8376
             "funding": [
8302
             "funding": [
8377
                 {
8303
                 {
8387
                     "type": "tidelift"
8313
                     "type": "tidelift"
8388
                 }
8314
                 }
8389
             ],
8315
             ],
8390
-            "time": "2024-05-31T15:07:36+00:00"
8316
+            "time": "2024-09-09T11:45:10+00:00"
8391
         },
8317
         },
8392
         {
8318
         {
8393
             "name": "symfony/process",
8319
             "name": "symfony/process",
10103
         },
10029
         },
10104
         {
10030
         {
10105
             "name": "phpstan/phpstan",
10031
             "name": "phpstan/phpstan",
10106
-            "version": "1.12.2",
10032
+            "version": "1.12.3",
10107
             "source": {
10033
             "source": {
10108
                 "type": "git",
10034
                 "type": "git",
10109
                 "url": "https://github.com/phpstan/phpstan.git",
10035
                 "url": "https://github.com/phpstan/phpstan.git",
10110
-                "reference": "0ca1c7bb55fca8fe6448f16fff0f311ccec960a1"
10036
+                "reference": "0fcbf194ab63d8159bb70d9aa3e1350051632009"
10111
             },
10037
             },
10112
             "dist": {
10038
             "dist": {
10113
                 "type": "zip",
10039
                 "type": "zip",
10114
-                "url": "https://api.github.com/repos/phpstan/phpstan/zipball/0ca1c7bb55fca8fe6448f16fff0f311ccec960a1",
10115
-                "reference": "0ca1c7bb55fca8fe6448f16fff0f311ccec960a1",
10040
+                "url": "https://api.github.com/repos/phpstan/phpstan/zipball/0fcbf194ab63d8159bb70d9aa3e1350051632009",
10041
+                "reference": "0fcbf194ab63d8159bb70d9aa3e1350051632009",
10116
                 "shasum": ""
10042
                 "shasum": ""
10117
             },
10043
             },
10118
             "require": {
10044
             "require": {
10157
                     "type": "github"
10083
                     "type": "github"
10158
                 }
10084
                 }
10159
             ],
10085
             ],
10160
-            "time": "2024-09-05T16:09:28+00:00"
10086
+            "time": "2024-09-09T08:10:35+00:00"
10161
         },
10087
         },
10162
         {
10088
         {
10163
             "name": "phpunit/php-code-coverage",
10089
             "name": "phpunit/php-code-coverage",
10482
         },
10408
         },
10483
         {
10409
         {
10484
             "name": "phpunit/phpunit",
10410
             "name": "phpunit/phpunit",
10485
-            "version": "10.5.32",
10411
+            "version": "10.5.33",
10486
             "source": {
10412
             "source": {
10487
                 "type": "git",
10413
                 "type": "git",
10488
                 "url": "https://github.com/sebastianbergmann/phpunit.git",
10414
                 "url": "https://github.com/sebastianbergmann/phpunit.git",
10489
-                "reference": "f069f46840445d37a4e6f0de8c5879598f9c4327"
10415
+                "reference": "4def7a9cda75af9c2bc179ed53a8e41313e7f7cf"
10490
             },
10416
             },
10491
             "dist": {
10417
             "dist": {
10492
                 "type": "zip",
10418
                 "type": "zip",
10493
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f069f46840445d37a4e6f0de8c5879598f9c4327",
10494
-                "reference": "f069f46840445d37a4e6f0de8c5879598f9c4327",
10419
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4def7a9cda75af9c2bc179ed53a8e41313e7f7cf",
10420
+                "reference": "4def7a9cda75af9c2bc179ed53a8e41313e7f7cf",
10495
                 "shasum": ""
10421
                 "shasum": ""
10496
             },
10422
             },
10497
             "require": {
10423
             "require": {
10563
             "support": {
10489
             "support": {
10564
                 "issues": "https://github.com/sebastianbergmann/phpunit/issues",
10490
                 "issues": "https://github.com/sebastianbergmann/phpunit/issues",
10565
                 "security": "https://github.com/sebastianbergmann/phpunit/security/policy",
10491
                 "security": "https://github.com/sebastianbergmann/phpunit/security/policy",
10566
-                "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.32"
10492
+                "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.33"
10567
             },
10493
             },
10568
             "funding": [
10494
             "funding": [
10569
                 {
10495
                 {
10579
                     "type": "tidelift"
10505
                     "type": "tidelift"
10580
                 }
10506
                 }
10581
             ],
10507
             ],
10582
-            "time": "2024-09-04T13:33:39+00:00"
10508
+            "time": "2024-09-09T06:06:56+00:00"
10583
         },
10509
         },
10584
         {
10510
         {
10585
             "name": "rector/rector",
10511
             "name": "rector/rector",
10586
-            "version": "1.2.4",
10512
+            "version": "1.2.5",
10587
             "source": {
10513
             "source": {
10588
                 "type": "git",
10514
                 "type": "git",
10589
                 "url": "https://github.com/rectorphp/rector.git",
10515
                 "url": "https://github.com/rectorphp/rector.git",
10590
-                "reference": "42a4aa23b48b4cfc8ebfeac2b570364e27744381"
10516
+                "reference": "e98aa793ca3fcd17e893cfaf9103ac049775d339"
10591
             },
10517
             },
10592
             "dist": {
10518
             "dist": {
10593
                 "type": "zip",
10519
                 "type": "zip",
10594
-                "url": "https://api.github.com/repos/rectorphp/rector/zipball/42a4aa23b48b4cfc8ebfeac2b570364e27744381",
10595
-                "reference": "42a4aa23b48b4cfc8ebfeac2b570364e27744381",
10520
+                "url": "https://api.github.com/repos/rectorphp/rector/zipball/e98aa793ca3fcd17e893cfaf9103ac049775d339",
10521
+                "reference": "e98aa793ca3fcd17e893cfaf9103ac049775d339",
10596
                 "shasum": ""
10522
                 "shasum": ""
10597
             },
10523
             },
10598
             "require": {
10524
             "require": {
10599
                 "php": "^7.2|^8.0",
10525
                 "php": "^7.2|^8.0",
10600
-                "phpstan/phpstan": "^1.11.11"
10526
+                "phpstan/phpstan": "^1.12.2"
10601
             },
10527
             },
10602
             "conflict": {
10528
             "conflict": {
10603
                 "rector/rector-doctrine": "*",
10529
                 "rector/rector-doctrine": "*",
10630
             ],
10556
             ],
10631
             "support": {
10557
             "support": {
10632
                 "issues": "https://github.com/rectorphp/rector/issues",
10558
                 "issues": "https://github.com/rectorphp/rector/issues",
10633
-                "source": "https://github.com/rectorphp/rector/tree/1.2.4"
10559
+                "source": "https://github.com/rectorphp/rector/tree/1.2.5"
10634
             },
10560
             },
10635
             "funding": [
10561
             "funding": [
10636
                 {
10562
                 {
10638
                     "type": "github"
10564
                     "type": "github"
10639
                 }
10565
                 }
10640
             ],
10566
             ],
10641
-            "time": "2024-08-23T09:03:01+00:00"
10567
+            "time": "2024-09-08T17:43:24+00:00"
10642
         },
10568
         },
10643
         {
10569
         {
10644
             "name": "sebastian/cli-parser",
10570
             "name": "sebastian/cli-parser",
12160
         },
12086
         },
12161
         {
12087
         {
12162
             "name": "symfony/polyfill-iconv",
12088
             "name": "symfony/polyfill-iconv",
12163
-            "version": "v1.30.0",
12089
+            "version": "v1.31.0",
12164
             "source": {
12090
             "source": {
12165
                 "type": "git",
12091
                 "type": "git",
12166
                 "url": "https://github.com/symfony/polyfill-iconv.git",
12092
                 "url": "https://github.com/symfony/polyfill-iconv.git",
12167
-                "reference": "c027e6a3c6aee334663ec21f5852e89738abc805"
12093
+                "reference": "48becf00c920479ca2e910c22a5a39e5d47ca956"
12168
             },
12094
             },
12169
             "dist": {
12095
             "dist": {
12170
                 "type": "zip",
12096
                 "type": "zip",
12171
-                "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/c027e6a3c6aee334663ec21f5852e89738abc805",
12172
-                "reference": "c027e6a3c6aee334663ec21f5852e89738abc805",
12097
+                "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/48becf00c920479ca2e910c22a5a39e5d47ca956",
12098
+                "reference": "48becf00c920479ca2e910c22a5a39e5d47ca956",
12173
                 "shasum": ""
12099
                 "shasum": ""
12174
             },
12100
             },
12175
             "require": {
12101
             "require": {
12176
-                "php": ">=7.1"
12102
+                "php": ">=7.2"
12177
             },
12103
             },
12178
             "provide": {
12104
             "provide": {
12179
                 "ext-iconv": "*"
12105
                 "ext-iconv": "*"
12220
                 "shim"
12146
                 "shim"
12221
             ],
12147
             ],
12222
             "support": {
12148
             "support": {
12223
-                "source": "https://github.com/symfony/polyfill-iconv/tree/v1.30.0"
12149
+                "source": "https://github.com/symfony/polyfill-iconv/tree/v1.31.0"
12224
             },
12150
             },
12225
             "funding": [
12151
             "funding": [
12226
                 {
12152
                 {
12236
                     "type": "tidelift"
12162
                     "type": "tidelift"
12237
                 }
12163
                 }
12238
             ],
12164
             ],
12239
-            "time": "2024-05-31T15:07:36+00:00"
12165
+            "time": "2024-09-09T11:45:10+00:00"
12240
         },
12166
         },
12241
         {
12167
         {
12242
             "name": "symfony/stopwatch",
12168
             "name": "symfony/stopwatch",

+ 9
- 1
database/factories/UserFactory.php View File

68
 
68
 
69
         return $this->afterCreating(function (User $user) use ($countryCode) {
69
         return $this->afterCreating(function (User $user) use ($countryCode) {
70
             Company::factory()
70
             Company::factory()
71
-                ->has(CompanyProfile::factory()->withCountry($countryCode), 'profile')
71
+                ->has(
72
+                    CompanyProfile::factory()
73
+                        ->withCountry($countryCode)
74
+                        ->state([
75
+                            'created_by' => $user->id,
76
+                            'updated_by' => $user->id,
77
+                        ]),
78
+                    'profile'
79
+                )
72
                 ->afterCreating(function (Company $company) use ($user, $countryCode) {
80
                 ->afterCreating(function (Company $company) use ($user, $countryCode) {
73
                     DB::transaction(function () use ($company, $user, $countryCode) {
81
                     DB::transaction(function () use ($company, $user, $countryCode) {
74
                         $companyDefaultService = app()->make(CompanyDefaultService::class);
82
                         $companyDefaultService = app()->make(CompanyDefaultService::class);

+ 9
- 9
package-lock.json View File

801
             "license": "MIT"
801
             "license": "MIT"
802
         },
802
         },
803
         "node_modules/ansi-regex": {
803
         "node_modules/ansi-regex": {
804
-            "version": "6.0.1",
805
-            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
806
-            "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
804
+            "version": "6.1.0",
805
+            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
806
+            "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
807
             "dev": true,
807
             "dev": true,
808
             "license": "MIT",
808
             "license": "MIT",
809
             "engines": {
809
             "engines": {
998
             }
998
             }
999
         },
999
         },
1000
         "node_modules/caniuse-lite": {
1000
         "node_modules/caniuse-lite": {
1001
-            "version": "1.0.30001658",
1002
-            "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001658.tgz",
1003
-            "integrity": "sha512-N2YVqWbJELVdrnsW5p+apoQyYt51aBMSsBZki1XZEfeBCexcM/sf4xiAHcXQBkuOwJBXtWF7aW1sYX6tKebPHw==",
1001
+            "version": "1.0.30001659",
1002
+            "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001659.tgz",
1003
+            "integrity": "sha512-Qxxyfv3RdHAfJcXelgf0hU4DFUVXBGTjqrBUZLUh8AtlGnsDo+CnncYtTd95+ZKfnANUOzxyIQCuU/UeBZBYoA==",
1004
             "dev": true,
1004
             "dev": true,
1005
             "funding": [
1005
             "funding": [
1006
                 {
1006
                 {
2267
             }
2267
             }
2268
         },
2268
         },
2269
         "node_modules/source-map-js": {
2269
         "node_modules/source-map-js": {
2270
-            "version": "1.2.0",
2271
-            "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
2272
-            "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
2270
+            "version": "1.2.1",
2271
+            "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
2272
+            "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
2273
             "dev": true,
2273
             "dev": true,
2274
             "license": "BSD-3-Clause",
2274
             "license": "BSD-3-Clause",
2275
             "engines": {
2275
             "engines": {

+ 16
- 2
resources/views/components/company/tables/reports/detailed-report.blade.php View File

1
-<table class="w-full table-auto divide-y divide-gray-200 dark:divide-white/5" x-data>
1
+<table class="w-full table-auto divide-y divide-gray-200 dark:divide-white/5">
2
     <thead class="divide-y divide-gray-200 dark:divide-white/5">
2
     <thead class="divide-y divide-gray-200 dark:divide-white/5">
3
     <tr class="bg-gray-50 dark:bg-white/5">
3
     <tr class="bg-gray-50 dark:bg-white/5">
4
         @foreach($report->getHeaders() as $index => $header)
4
         @foreach($report->getHeaders() as $index => $header)
27
                     <x-filament-tables::cell class="{{ $report->getAlignmentClass($cellIndex) }}">
27
                     <x-filament-tables::cell class="{{ $report->getAlignmentClass($cellIndex) }}">
28
                         <div class="px-3 py-4 text-sm leading-6 text-gray-950 dark:text-white">
28
                         <div class="px-3 py-4 text-sm leading-6 text-gray-950 dark:text-white">
29
                             @if(is_array($cell) && isset($cell['name']))
29
                             @if(is_array($cell) && isset($cell['name']))
30
-                                @if(isset($cell['id']) && isset($cell['start_date']) && isset($cell['end_date']))
30
+                                @if($cell['name'] === 'Retained Earnings' && isset($cell['start_date']) && isset($cell['end_date']))
31
+                                    <x-filament::link
32
+                                        color="primary"
33
+                                        target="_blank"
34
+                                        icon="heroicon-o-arrow-top-right-on-square"
35
+                                        :icon-position="\Filament\Support\Enums\IconPosition::After"
36
+                                        :icon-size="\Filament\Support\Enums\IconSize::Small"
37
+                                        href="{{ \App\Filament\Company\Pages\Reports\IncomeStatement::getUrl([
38
+                                            'startDate' => $cell['start_date'],
39
+                                            'endDate' => $cell['end_date']
40
+                                        ]) }}"
41
+                                    >
42
+                                        {{ $cell['name'] }}
43
+                                    </x-filament::link>
44
+                                @elseif(isset($cell['id']) && isset($cell['start_date']) && isset($cell['end_date']))
31
                                     <x-filament::link
45
                                     <x-filament::link
32
                                         color="primary"
46
                                         color="primary"
33
                                         target="_blank"
47
                                         target="_blank"

+ 8
- 10
resources/views/filament/company/pages/reports/detailed-report.blade.php View File

1
 <x-filament-panels::page>
1
 <x-filament-panels::page>
2
     <x-filament::section>
2
     <x-filament::section>
3
-        <div class="flex flex-col md:flex-row items-start md:items-center justify-between gap-4 md:gap-8">
3
+        <div class="flex flex-col md:flex-row items-start md:items-center justify-between gap-4">
4
             <!-- Form Container -->
4
             <!-- Form Container -->
5
             @if(method_exists($this, 'filtersForm'))
5
             @if(method_exists($this, 'filtersForm'))
6
                 {{ $this->filtersForm }}
6
                 {{ $this->filtersForm }}
7
             @endif
7
             @endif
8
 
8
 
9
             <!-- Grouping Button and Column Toggle -->
9
             <!-- Grouping Button and Column Toggle -->
10
-            <div class="flex flex-col md:flex-row items-start md:items-center gap-4 md:gap-8 flex-shrink-0">
11
-                @if($this->hasToggleableColumns())
12
-                    <x-filament-tables::column-toggle.dropdown
13
-                        :form="$this->toggleTableColumnForm"
14
-                        :trigger-action="$this->toggleColumnsAction"
15
-                    />
16
-                @endif
17
-            </div>
10
+            @if($this->hasToggleableColumns())
11
+                <x-filament-tables::column-toggle.dropdown
12
+                    :form="$this->toggleTableColumnForm"
13
+                    :trigger-action="$this->toggleColumnsAction"
14
+                />
15
+            @endif
18
 
16
 
19
-            <div class="inline-flex items-center flex-shrink-0 min-w-[8.5rem] justify-end">
17
+            <div class="inline-flex items-center min-w-0 md:min-w-[9.5rem] justify-end">
20
                 {{ $this->applyFiltersAction }}
18
                 {{ $this->applyFiltersAction }}
21
             </div>
19
             </div>
22
         </div>
20
         </div>

+ 8
- 10
resources/views/filament/company/pages/reports/income-statement.blade.php View File

1
 <x-filament-panels::page>
1
 <x-filament-panels::page>
2
     <x-filament::section>
2
     <x-filament::section>
3
-        <div class="flex flex-col md:flex-row items-start md:items-center justify-between gap-4 md:gap-8">
3
+        <div class="flex flex-col md:flex-row items-start md:items-center justify-between gap-4">
4
             <!-- Form Container -->
4
             <!-- Form Container -->
5
             @if(method_exists($this, 'filtersForm'))
5
             @if(method_exists($this, 'filtersForm'))
6
                 {{ $this->filtersForm }}
6
                 {{ $this->filtersForm }}
7
             @endif
7
             @endif
8
 
8
 
9
             <!-- Grouping Button and Column Toggle -->
9
             <!-- Grouping Button and Column Toggle -->
10
-            <div class="flex flex-col md:flex-row items-start md:items-center gap-4 md:gap-8 flex-shrink-0">
11
-                @if($this->hasToggleableColumns())
12
-                    <x-filament-tables::column-toggle.dropdown
13
-                        :form="$this->toggleTableColumnForm"
14
-                        :trigger-action="$this->toggleColumnsAction"
15
-                    />
16
-                @endif
17
-            </div>
10
+            @if($this->hasToggleableColumns())
11
+                <x-filament-tables::column-toggle.dropdown
12
+                    :form="$this->toggleTableColumnForm"
13
+                    :trigger-action="$this->toggleColumnsAction"
14
+                />
15
+            @endif
18
 
16
 
19
-            <div class="inline-flex items-center flex-shrink-0 min-w-[8.5rem] justify-end">
17
+            <div class="inline-flex items-center min-w-0 md:min-w-[9.5rem] justify-end">
20
                 {{ $this->applyFiltersAction }}
18
                 {{ $this->applyFiltersAction }}
21
             </div>
19
             </div>
22
         </div>
20
         </div>

Loading…
Cancel
Save