Fixes for recurring ivnoices

This commit is contained in:
David Bomba 2024-02-15 08:28:52 +11:00
parent dba0bab91e
commit bfc412f18e
8 changed files with 108 additions and 235 deletions

View File

@ -1,65 +0,0 @@
<?php
/**
* Invoice Ninja (https://invoiceninja.com).
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://www.elastic.co/licensing/elastic-license
*/
namespace App\Jobs\Cron;
use App\Libraries\MultiDB;
use App\Models\Company;
use App\Models\RecurringInvoice;
use Illuminate\Foundation\Bus\Dispatchable;
/*@not used*/
class CompanyRecurringCron
{
use Dispatchable;
public $tries = 1;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct()
{
}
/**
* Execute the job.
*
* @return void
*/
public function handle(): void
{
//multiDB environment, need to
foreach (MultiDB::$dbs as $db) {
MultiDB::setDB($db);
Company::where('is_disabled', 0)
->whereHas('recurring_invoices', function ($query) {
$query->where('next_send_date', '<=', now()->toDateTimeString())
->whereNotNull('next_send_date')
->whereNull('deleted_at')
->where('is_deleted', false)
->where('status_id', RecurringInvoice::STATUS_ACTIVE)
->where('remaining_cycles', '!=', '0')
->whereHas('client', function ($query) {
$query->where('is_deleted', 0)
->where('deleted_at', null);
});
})
->cursor()->each(function ($company) {
SendCompanyRecurring::dispatch($company->id, $company->db);
});
}
}
}

View File

@ -51,7 +51,7 @@ class RecurringExpensesCron
Auth::logout();
if (! config('ninja.db.multi_db_enabled')) {
$recurring_expenses = RecurringExpense::where('next_send_date', '<=', now()->toDateTimeString())
$recurring_expenses = RecurringExpense::query()->where('next_send_date', '<=', now()->toDateTimeString())
->whereNotNull('next_send_date')
->whereNull('deleted_at')
->where('status_id', RecurringInvoice::STATUS_ACTIVE)
@ -76,7 +76,7 @@ class RecurringExpensesCron
foreach (MultiDB::$dbs as $db) {
MultiDB::setDB($db);
$recurring_expenses = RecurringExpense::where('next_send_date', '<=', now()->toDateTimeString())
$recurring_expenses = RecurringExpense::query()->where('next_send_date', '<=', now()->toDateTimeString())
->whereNotNull('next_send_date')
->whereNull('deleted_at')
->where('status_id', RecurringInvoice::STATUS_ACTIVE)

View File

@ -48,7 +48,7 @@ class RecurringInvoicesCron
Auth::logout();
if (! config('ninja.db.multi_db_enabled')) {
$recurring_invoices = RecurringInvoice::where('status_id', RecurringInvoice::STATUS_ACTIVE)
$recurring_invoices = RecurringInvoice::query()->where('status_id', RecurringInvoice::STATUS_ACTIVE)
->where('is_deleted', false)
->where('remaining_cycles', '!=', '0')
->whereNotNull('next_send_date')
@ -87,7 +87,7 @@ class RecurringInvoicesCron
foreach (MultiDB::$dbs as $db) {
MultiDB::setDB($db);
$recurring_invoices = RecurringInvoice::where('status_id', RecurringInvoice::STATUS_ACTIVE)
$recurring_invoices = RecurringInvoice::query()->where('status_id', RecurringInvoice::STATUS_ACTIVE)
->where('is_deleted', false)
->where('remaining_cycles', '!=', '0')
->whereNull('deleted_at')

View File

@ -1,74 +0,0 @@
<?php
/**
* Invoice Ninja (https://invoiceninja.com).
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2023. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://www.elastic.co/licensing/elastic-license
*/
namespace App\Jobs\Cron;
use App\Jobs\RecurringInvoice\SendRecurring;
use App\Libraries\MultiDB;
use App\Models\Company;
use App\Models\RecurringInvoice;
use Illuminate\Foundation\Bus\Dispatchable;
/*@not used*/
class SendCompanyRecurring
{
use Dispatchable;
public $tries = 1;
/** @var \App\Models\Company $company */
public $company;
public function __construct(private int $company_id, private string $db)
{
}
/**
* Execute the job.
*
* @return void
*/
public function handle(): void
{
MultiDB::setDB($this->db);
$recurring_invoices = Company::where('id', $this->company_id)
->where('is_disabled', 0)
->whereHas('recurring_invoices', function ($query) {
$query->where('next_send_date', '<=', now()->toDateTimeString())
->whereNotNull('next_send_date')
->whereNull('deleted_at')
->where('is_deleted', false)
->where('status_id', RecurringInvoice::STATUS_ACTIVE)
->where('remaining_cycles', '!=', '0')
->whereHas('client', function ($query) {
$query->where('is_deleted', 0)
->where('deleted_at', null);
});
})
->cursor()->each(function ($recurring_invoice) {
nlog("Trying to send {$recurring_invoice->number}");
if ($recurring_invoice->company->stop_on_unpaid_recurring) {
if ($recurring_invoice->invoices()->whereIn('status_id', [2, 3])->where('is_deleted', 0)->where('balance', '>', 0)->exists()) {
return;
}
}
try {
(new SendRecurring($recurring_invoice, $recurring_invoice->company->db))->handle();
} catch (\Exception $e) {
nlog("Unable to sending recurring invoice {$recurring_invoice->id} ".$e->getMessage());
}
});
}
}

View File

@ -141,6 +141,7 @@ use Illuminate\Support\Carbon;
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense withTrashed()
* @method static \Illuminate\Database\Eloquent\Builder|RecurringExpense withoutTrashed()
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Document> $documents
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @mixin \Eloquent
*/
class RecurringExpense extends BaseModel

View File

@ -122,6 +122,7 @@ use Laracasts\Presenter\PresentableTrait;
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Backup> $history
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\RecurringInvoiceInvitation> $invitations
* @property-read \Illuminate\Database\Eloquent\Collection<int, \App\Models\Invoice> $invoices
* @method static \Illuminate\Database\Eloquent\Builder|BaseModel company()
* @property bool $is_proforma
* @mixin \Eloquent
*/
@ -342,18 +343,27 @@ class RecurringInvoice extends BaseModel
return $this->status_id;
}
}
public function calculateStatus()
/**
* CalculateStatus
*
* Calculates the status of the Recurring Invoice.
*
* We only apply the pending status on new models, we never revert an invoice back to
* pending.
* @param bool $new_model
* @return int
*/
public function calculateStatus(bool $new_model = false) //15-02-2024 - $new_model needed
{
if($this->remaining_cycles == 0) {
return self::STATUS_COMPLETED;
} elseif ($this->status_id == self::STATUS_ACTIVE && Carbon::parse($this->next_send_date)->isFuture()) {
} elseif ($new_model && $this->status_id == self::STATUS_ACTIVE && Carbon::parse($this->next_send_date)->isFuture())
return self::STATUS_PENDING;
} else {
return $this->status_id;
}
return $this->status_id;
}
public function nextSendDate(): ?Carbon

View File

@ -365,7 +365,7 @@ class BaseRepository
$model = $model->calc()->getRecurringInvoice();
$model->status_id = $model->calculateStatus();
$model->status_id = $model->calculateStatus($this->new_model);
if ($this->new_model) {
event('eloquent.created: App\Models\RecurringInvoice', $model);

169
composer.lock generated
View File

@ -707,16 +707,16 @@
},
{
"name": "amphp/socket",
"version": "v2.2.2",
"version": "v2.2.3",
"source": {
"type": "git",
"url": "https://github.com/amphp/socket.git",
"reference": "eb6c5e6baae5aebd9a209f50e81bff38c7efef97"
"reference": "40c80bdc67a9f975ecb5f4083e3c84ef9f23eace"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/amphp/socket/zipball/eb6c5e6baae5aebd9a209f50e81bff38c7efef97",
"reference": "eb6c5e6baae5aebd9a209f50e81bff38c7efef97",
"url": "https://api.github.com/repos/amphp/socket/zipball/40c80bdc67a9f975ecb5f4083e3c84ef9f23eace",
"reference": "40c80bdc67a9f975ecb5f4083e3c84ef9f23eace",
"shasum": ""
},
"require": {
@ -735,7 +735,7 @@
"amphp/phpunit-util": "^3",
"amphp/process": "^2",
"phpunit/phpunit": "^9",
"psalm/phar": "^5.4"
"psalm/phar": "5.20"
},
"type": "library",
"autoload": {
@ -779,7 +779,7 @@
],
"support": {
"issues": "https://github.com/amphp/socket/issues",
"source": "https://github.com/amphp/socket/tree/v2.2.2"
"source": "https://github.com/amphp/socket/tree/v2.2.3"
},
"funding": [
{
@ -787,7 +787,7 @@
"type": "github"
}
],
"time": "2023-12-31T18:12:01+00:00"
"time": "2024-02-13T21:03:09+00:00"
},
{
"name": "amphp/sync",
@ -1343,16 +1343,16 @@
},
{
"name": "aws/aws-sdk-php",
"version": "3.298.3",
"version": "3.298.9",
"source": {
"type": "git",
"url": "https://github.com/aws/aws-sdk-php.git",
"reference": "70fde185df4a8dd99983a308b823991fb5b39060"
"reference": "db225c3a1c5dabfbb5071349cfb7e4c396c3d9ec"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/70fde185df4a8dd99983a308b823991fb5b39060",
"reference": "70fde185df4a8dd99983a308b823991fb5b39060",
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/db225c3a1c5dabfbb5071349cfb7e4c396c3d9ec",
"reference": "db225c3a1c5dabfbb5071349cfb7e4c396c3d9ec",
"shasum": ""
},
"require": {
@ -1432,9 +1432,9 @@
"support": {
"forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80",
"issues": "https://github.com/aws/aws-sdk-php/issues",
"source": "https://github.com/aws/aws-sdk-php/tree/3.298.3"
"source": "https://github.com/aws/aws-sdk-php/tree/3.298.9"
},
"time": "2024-02-05T19:05:28+00:00"
"time": "2024-02-13T19:08:16+00:00"
},
{
"name": "bacon/bacon-qr-code",
@ -1717,16 +1717,16 @@
},
{
"name": "checkout/checkout-sdk-php",
"version": "3.0.20",
"version": "3.0.21",
"source": {
"type": "git",
"url": "https://github.com/checkout/checkout-sdk-php.git",
"reference": "4310ef994a663b925d1209f8c579f0965f5e14f8"
"reference": "0195aa0153b79b3f8350509e54a5654e57f62bd3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/checkout/checkout-sdk-php/zipball/4310ef994a663b925d1209f8c579f0965f5e14f8",
"reference": "4310ef994a663b925d1209f8c579f0965f5e14f8",
"url": "https://api.github.com/repos/checkout/checkout-sdk-php/zipball/0195aa0153b79b3f8350509e54a5654e57f62bd3",
"reference": "0195aa0153b79b3f8350509e54a5654e57f62bd3",
"shasum": ""
},
"require": {
@ -1779,9 +1779,9 @@
],
"support": {
"issues": "https://github.com/checkout/checkout-sdk-php/issues",
"source": "https://github.com/checkout/checkout-sdk-php/tree/3.0.20"
"source": "https://github.com/checkout/checkout-sdk-php/tree/3.0.21"
},
"time": "2024-01-10T13:50:01+00:00"
"time": "2024-02-08T17:30:23+00:00"
},
{
"name": "clue/stream-filter",
@ -3455,16 +3455,16 @@
},
{
"name": "google/apiclient-services",
"version": "v0.334.0",
"version": "v0.335.0",
"source": {
"type": "git",
"url": "https://github.com/googleapis/google-api-php-client-services.git",
"reference": "5d2ebd6199b34b4b207eff2118bb783ae7b6f413"
"reference": "3e6cea8f43066378babdf00e718f01c7c55233fd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/5d2ebd6199b34b4b207eff2118bb783ae7b6f413",
"reference": "5d2ebd6199b34b4b207eff2118bb783ae7b6f413",
"url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/3e6cea8f43066378babdf00e718f01c7c55233fd",
"reference": "3e6cea8f43066378babdf00e718f01c7c55233fd",
"shasum": ""
},
"require": {
@ -3493,9 +3493,9 @@
],
"support": {
"issues": "https://github.com/googleapis/google-api-php-client-services/issues",
"source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.334.0"
"source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.335.0"
},
"time": "2024-02-04T01:06:40+00:00"
"time": "2024-02-12T01:08:15+00:00"
},
{
"name": "google/auth",
@ -5326,16 +5326,16 @@
},
{
"name": "laravel/framework",
"version": "v10.43.0",
"version": "v10.44.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
"reference": "4f7802dfc9993cb57cf69615491ce1a7eb2e9529"
"reference": "1199dbe361787bbe9648131a79f53921b4148cf6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/framework/zipball/4f7802dfc9993cb57cf69615491ce1a7eb2e9529",
"reference": "4f7802dfc9993cb57cf69615491ce1a7eb2e9529",
"url": "https://api.github.com/repos/laravel/framework/zipball/1199dbe361787bbe9648131a79f53921b4148cf6",
"reference": "1199dbe361787bbe9648131a79f53921b4148cf6",
"shasum": ""
},
"require": {
@ -5383,6 +5383,7 @@
"conflict": {
"carbonphp/carbon-doctrine-types": ">=3.0",
"doctrine/dbal": ">=4.0",
"phpunit/phpunit": ">=11.0.0",
"tightenco/collect": "<5.5.33"
},
"provide": {
@ -5527,7 +5528,7 @@
"issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework"
},
"time": "2024-01-30T16:25:02+00:00"
"time": "2024-02-13T16:01:16+00:00"
},
{
"name": "laravel/prompts",
@ -5709,16 +5710,16 @@
},
{
"name": "laravel/socialite",
"version": "v5.11.0",
"version": "v5.12.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/socialite.git",
"reference": "4f6a8af6f3f7c18da03d19842dd0514315501c10"
"reference": "ffeeb2cdf723b4c88b25479968e2d3a61a83dbe5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/socialite/zipball/4f6a8af6f3f7c18da03d19842dd0514315501c10",
"reference": "4f6a8af6f3f7c18da03d19842dd0514315501c10",
"url": "https://api.github.com/repos/laravel/socialite/zipball/ffeeb2cdf723b4c88b25479968e2d3a61a83dbe5",
"reference": "ffeeb2cdf723b4c88b25479968e2d3a61a83dbe5",
"shasum": ""
},
"require": {
@ -5775,7 +5776,7 @@
"issues": "https://github.com/laravel/socialite/issues",
"source": "https://github.com/laravel/socialite"
},
"time": "2023-12-02T18:22:36+00:00"
"time": "2024-02-11T18:29:55+00:00"
},
{
"name": "laravel/tinker",
@ -8024,16 +8025,16 @@
},
{
"name": "nordigen/nordigen-php",
"version": "1.1.1",
"version": "1.1.2",
"source": {
"type": "git",
"url": "https://github.com/nordigen/nordigen-php.git",
"reference": "1770384ceb8042c7275cb0e404d8b7131bdccc56"
"reference": "573a9935fc7444ba84d0cdd7dba46e033dbf7bd5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nordigen/nordigen-php/zipball/1770384ceb8042c7275cb0e404d8b7131bdccc56",
"reference": "1770384ceb8042c7275cb0e404d8b7131bdccc56",
"url": "https://api.github.com/repos/nordigen/nordigen-php/zipball/573a9935fc7444ba84d0cdd7dba46e033dbf7bd5",
"reference": "573a9935fc7444ba84d0cdd7dba46e033dbf7bd5",
"shasum": ""
},
"require": {
@ -8073,9 +8074,9 @@
],
"support": {
"issues": "https://github.com/nordigen/nordigen-php/issues",
"source": "https://github.com/nordigen/nordigen-php/tree/1.1.1"
"source": "https://github.com/nordigen/nordigen-php/tree/1.1.2"
},
"time": "2023-06-22T10:53:06+00:00"
"time": "2024-02-13T14:06:32+00:00"
},
{
"name": "nunomaduro/termwind",
@ -15831,36 +15832,36 @@
"packages-dev": [
{
"name": "barryvdh/laravel-debugbar",
"version": "v3.9.2",
"version": "v3.10.4",
"source": {
"type": "git",
"url": "https://github.com/barryvdh/laravel-debugbar.git",
"reference": "bfd0131c146973cab164e50f5cdd8a67cc60cab1"
"reference": "09d3dc77d7dc1b063e3728a6029c39ee0fbebf1d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/bfd0131c146973cab164e50f5cdd8a67cc60cab1",
"reference": "bfd0131c146973cab164e50f5cdd8a67cc60cab1",
"url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/09d3dc77d7dc1b063e3728a6029c39ee0fbebf1d",
"reference": "09d3dc77d7dc1b063e3728a6029c39ee0fbebf1d",
"shasum": ""
},
"require": {
"illuminate/routing": "^9|^10",
"illuminate/session": "^9|^10",
"illuminate/support": "^9|^10",
"maximebf/debugbar": "^1.18.2",
"illuminate/routing": "^9|^10|^11",
"illuminate/session": "^9|^10|^11",
"illuminate/support": "^9|^10|^11",
"maximebf/debugbar": "~1.20.1",
"php": "^8.0",
"symfony/finder": "^6"
"symfony/finder": "^6|^7"
},
"require-dev": {
"mockery/mockery": "^1.3.3",
"orchestra/testbench-dusk": "^5|^6|^7|^8",
"orchestra/testbench-dusk": "^5|^6|^7|^8|^9",
"phpunit/phpunit": "^8.5.30|^9.0",
"squizlabs/php_codesniffer": "^3.5"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.8-dev"
"dev-master": "3.10-dev"
},
"laravel": {
"providers": [
@ -15899,7 +15900,7 @@
],
"support": {
"issues": "https://github.com/barryvdh/laravel-debugbar/issues",
"source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.9.2"
"source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.10.4"
},
"funding": [
{
@ -15911,7 +15912,7 @@
"type": "github"
}
],
"time": "2023-08-25T18:43:57+00:00"
"time": "2024-02-14T08:52:12+00:00"
},
{
"name": "barryvdh/laravel-ide-helper",
@ -16507,16 +16508,16 @@
},
{
"name": "fidry/cpu-core-counter",
"version": "1.0.0",
"version": "1.1.0",
"source": {
"type": "git",
"url": "https://github.com/theofidry/cpu-core-counter.git",
"reference": "85193c0b0cb5c47894b5eaec906e946f054e7077"
"reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/85193c0b0cb5c47894b5eaec906e946f054e7077",
"reference": "85193c0b0cb5c47894b5eaec906e946f054e7077",
"url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/f92996c4d5c1a696a6a970e20f7c4216200fcc42",
"reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42",
"shasum": ""
},
"require": {
@ -16556,7 +16557,7 @@
],
"support": {
"issues": "https://github.com/theofidry/cpu-core-counter/issues",
"source": "https://github.com/theofidry/cpu-core-counter/tree/1.0.0"
"source": "https://github.com/theofidry/cpu-core-counter/tree/1.1.0"
},
"funding": [
{
@ -16564,7 +16565,7 @@
"type": "github"
}
],
"time": "2023-09-17T21:38:23+00:00"
"time": "2024-02-07T09:43:46+00:00"
},
{
"name": "filp/whoops",
@ -16884,16 +16885,16 @@
},
{
"name": "larastan/larastan",
"version": "v2.8.1",
"version": "v2.9.0",
"source": {
"type": "git",
"url": "https://github.com/larastan/larastan.git",
"reference": "b7cc6a29c457a7d4f3de90466392ae9ad3e17022"
"reference": "35fa9cbe1895e76215bbe74571a344f2705fbe01"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/larastan/larastan/zipball/b7cc6a29c457a7d4f3de90466392ae9ad3e17022",
"reference": "b7cc6a29c457a7d4f3de90466392ae9ad3e17022",
"url": "https://api.github.com/repos/larastan/larastan/zipball/35fa9cbe1895e76215bbe74571a344f2705fbe01",
"reference": "35fa9cbe1895e76215bbe74571a344f2705fbe01",
"shasum": ""
},
"require": {
@ -16961,7 +16962,7 @@
],
"support": {
"issues": "https://github.com/larastan/larastan/issues",
"source": "https://github.com/larastan/larastan/tree/v2.8.1"
"source": "https://github.com/larastan/larastan/tree/v2.9.0"
},
"funding": [
{
@ -16981,26 +16982,26 @@
"type": "patreon"
}
],
"time": "2024-01-08T09:11:17+00:00"
"time": "2024-02-13T11:49:22+00:00"
},
{
"name": "maximebf/debugbar",
"version": "v1.19.1",
"version": "v1.20.1",
"source": {
"type": "git",
"url": "https://github.com/maximebf/php-debugbar.git",
"reference": "03dd40a1826f4d585ef93ef83afa2a9874a00523"
"reference": "06ebf922ccedfa4cc43015825697ee8c1fb80f7e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/03dd40a1826f4d585ef93ef83afa2a9874a00523",
"reference": "03dd40a1826f4d585ef93ef83afa2a9874a00523",
"url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/06ebf922ccedfa4cc43015825697ee8c1fb80f7e",
"reference": "06ebf922ccedfa4cc43015825697ee8c1fb80f7e",
"shasum": ""
},
"require": {
"php": "^7.1|^8",
"psr/log": "^1|^2|^3",
"symfony/var-dumper": "^4|^5|^6"
"symfony/var-dumper": "^4|^5|^6|^7"
},
"require-dev": {
"phpunit/phpunit": ">=7.5.20 <10.0",
@ -17014,7 +17015,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.18-dev"
"dev-master": "1.20-dev"
}
},
"autoload": {
@ -17045,9 +17046,9 @@
],
"support": {
"issues": "https://github.com/maximebf/php-debugbar/issues",
"source": "https://github.com/maximebf/php-debugbar/tree/v1.19.1"
"source": "https://github.com/maximebf/php-debugbar/tree/v1.20.1"
},
"time": "2023-10-12T08:10:52+00:00"
"time": "2024-02-13T19:03:14+00:00"
},
{
"name": "mockery/mockery",
@ -17488,16 +17489,16 @@
},
{
"name": "phpstan/phpstan",
"version": "1.10.57",
"version": "1.10.58",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan.git",
"reference": "1627b1d03446904aaa77593f370c5201d2ecc34e"
"reference": "a23518379ec4defd9e47cbf81019526861623ec2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/1627b1d03446904aaa77593f370c5201d2ecc34e",
"reference": "1627b1d03446904aaa77593f370c5201d2ecc34e",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/a23518379ec4defd9e47cbf81019526861623ec2",
"reference": "a23518379ec4defd9e47cbf81019526861623ec2",
"shasum": ""
},
"require": {
@ -17546,7 +17547,7 @@
"type": "tidelift"
}
],
"time": "2024-01-24T11:51:34+00:00"
"time": "2024-02-12T20:02:57+00:00"
},
{
"name": "phpunit/php-code-coverage",
@ -19101,16 +19102,16 @@
},
{
"name": "spatie/laravel-ignition",
"version": "2.4.1",
"version": "2.4.2",
"source": {
"type": "git",
"url": "https://github.com/spatie/laravel-ignition.git",
"reference": "005e1e7b1232f3b22d7e7be3f602693efc7dba67"
"reference": "351504f4570e32908839fc5a2dc53bf77d02f85e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/005e1e7b1232f3b22d7e7be3f602693efc7dba67",
"reference": "005e1e7b1232f3b22d7e7be3f602693efc7dba67",
"url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/351504f4570e32908839fc5a2dc53bf77d02f85e",
"reference": "351504f4570e32908839fc5a2dc53bf77d02f85e",
"shasum": ""
},
"require": {
@ -19189,7 +19190,7 @@
"type": "github"
}
],
"time": "2024-01-12T13:14:58+00:00"
"time": "2024-02-09T16:08:40+00:00"
},
{
"name": "spaze/phpstan-stripe",