diff --git a/VERSION.txt b/VERSION.txt index f918e52c1b..64296040bc 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1 +1 @@ -5.10.51 \ No newline at end of file +5.10.52 \ No newline at end of file diff --git a/app/Helpers/Invoice/InvoiceSum.php b/app/Helpers/Invoice/InvoiceSum.php index 6d7be282f7..6ad925ab3b 100644 --- a/app/Helpers/Invoice/InvoiceSum.php +++ b/app/Helpers/Invoice/InvoiceSum.php @@ -38,17 +38,17 @@ class InvoiceSum public $total_taxes = 0; - private $total; + private $total = 0; - private $total_discount; + private $total_discount = 0; private $total_custom_values; private $total_tax_map; - private $sub_total; + private $sub_total = 0; - private $gross_sub_total; + private $gross_sub_total = 0; private $precision; diff --git a/app/Helpers/Invoice/InvoiceSumInclusive.php b/app/Helpers/Invoice/InvoiceSumInclusive.php index 5783022bff..6aa627f23a 100644 --- a/app/Helpers/Invoice/InvoiceSumInclusive.php +++ b/app/Helpers/Invoice/InvoiceSumInclusive.php @@ -36,17 +36,17 @@ class InvoiceSumInclusive public $invoice_item; - public $total_taxes; + public $total_taxes = 0; - private $total; + private $total = 0; - private $total_discount; + private $total_discount = 0; private $total_custom_values; private $total_tax_map; - private $sub_total; + private $sub_total = 0; private $precision; diff --git a/app/Http/Controllers/InvoiceController.php b/app/Http/Controllers/InvoiceController.php index 20eb5a353a..66489a09b8 100644 --- a/app/Http/Controllers/InvoiceController.php +++ b/app/Http/Controllers/InvoiceController.php @@ -582,6 +582,21 @@ class InvoiceController extends BaseController return $this->listResponse(Invoice::withTrashed()->whereIn('id', $this->transformKeys($ids))->company()); } + if(in_array($action, ['email','send_email'])) { + + $invoice = $invoices->first(); + + if($user->can('edit', $invoice)){ + + $template = $request->input('email_type', $invoice->calculateTemplate('invoice')); + + BulkInvoiceJob::dispatch($invoices->pluck('id')->toArray(), $user->company()->db, $template); + + } + + return $this->listResponse(Invoice::withTrashed()->whereIn('id', $this->transformKeys($ids))->company()); + + } /* * Send the other actions to the switch */ @@ -752,19 +767,6 @@ class InvoiceController extends BaseController } break; - case 'email': - case 'send_email': - //check query parameter for email_type and set the template else use calculateTemplate - - $template = request()->has('email_type') ? request()->input('email_type') : $invoice->calculateTemplate('invoice'); - - BulkInvoiceJob::dispatch($invoice, $template); - - if (! $bulk) { - return response()->json(['message' => 'email sent'], 200); - } - break; - default: return response()->json(['message' => ctrans('texts.action_unavailable', ['action' => $action])], 400); } diff --git a/app/Jobs/Invoice/BulkInvoiceJob.php b/app/Jobs/Invoice/BulkInvoiceJob.php index f7d25a7dc0..8cb5c83055 100644 --- a/app/Jobs/Invoice/BulkInvoiceJob.php +++ b/app/Jobs/Invoice/BulkInvoiceJob.php @@ -16,6 +16,7 @@ use App\Models\Webhook; use App\Services\Email\Email; use Illuminate\Bus\Queueable; use App\Jobs\Entity\EmailEntity; +use App\Libraries\MultiDB; use App\Services\Email\EmailObject; use Illuminate\Queue\SerializesModels; use Illuminate\Queue\InteractsWithQueue; @@ -29,6 +30,10 @@ class BulkInvoiceJob implements ShouldQueue use Queueable; use SerializesModels; + public $tries = 1; + + public $timeout = 3600; + private array $templates = [ 'email_template_invoice', 'email_template_quote', @@ -46,7 +51,7 @@ class BulkInvoiceJob implements ShouldQueue 'email_template_purchase_order', ]; - public function __construct(public Invoice $invoice, public string $reminder_template){} + public function __construct(public array $invoice_ids, public string $db, public string $reminder_template){} /** * Execute the job. @@ -55,34 +60,48 @@ class BulkInvoiceJob implements ShouldQueue * @return void */ public function handle() - { //only the reminder should mark the reminder sent field + { + MultiDB::setDb($this->db); - $this->invoice->service()->markSent()->save(); + Invoice::with([ + 'invitations', + 'invitations.contact.client.country', + 'invitations.invoice.client.country', + 'invitations.invoice.company' + ]) + ->withTrashed() + ->whereIn('id', $this->invoice_ids) + ->cursor() + ->each(function ($invoice){ - $this->invoice->invitations->load('contact.client.country', 'invoice.client.country', 'invoice.company')->each(function ($invitation) { - - //@refactor 2024-11-10 - move email into EmailObject/Email::class - $template = $this->resolveTemplateString($this->reminder_template); + $invoice->service()->markSent()->save(); - $mo = new EmailObject(); - $mo->entity_id = $invitation->invoice_id; - $mo->template = $template; //full template name in use - $mo->email_template_body = $template; - $mo->email_template_subject = str_replace("template", "subject", $template); + $invoice->invitations->each(function ($invitation) { + + $template = $this->resolveTemplateString($this->reminder_template); - $mo->entity_class = get_class($invitation->invoice); - $mo->invitation_id = $invitation->id; - $mo->client_id = $invitation->contact->client_id ?? null; - $mo->vendor_id = $invitation->contact->vendor_id ?? null; + $mo = new EmailObject(); + $mo->entity_id = $invitation->invoice_id; + $mo->template = $template; //full template name in use + $mo->email_template_body = $template; + $mo->email_template_subject = str_replace("template", "subject", $template); - Email::dispatch($mo, $invitation->company); + $mo->entity_class = get_class($invitation->invoice); + $mo->invitation_id = $invitation->id; + $mo->client_id = $invitation->contact->client_id ?? null; + $mo->vendor_id = $invitation->contact->vendor_id ?? null; + Email::dispatch($mo, $invitation->company->withoutRelations()); + + }); + + if ($invoice->invitations->count() >= 1) { + $invoice->entityEmailEvent($invoice->invitations->first(), 'invoice', $this->reminder_template); + $invoice->sendEvent(Webhook::EVENT_SENT_INVOICE, "client"); + } + + sleep(1); // this is needed to slow down the amount of data that is pushed into cache }); - - if ($this->invoice->invitations->count() >= 1) { - $this->invoice->entityEmailEvent($this->invoice->invitations->first(), 'invoice', $this->reminder_template); - $this->invoice->sendEvent(Webhook::EVENT_SENT_INVOICE, "client"); - } } private function resolveTemplateString(string $template): string diff --git a/app/Services/EDocument/Gateway/Storecove/StorecoveAdapter.php b/app/Services/EDocument/Gateway/Storecove/StorecoveAdapter.php index 5edfb4b03a..2d0a7cce94 100644 --- a/app/Services/EDocument/Gateway/Storecove/StorecoveAdapter.php +++ b/app/Services/EDocument/Gateway/Storecove/StorecoveAdapter.php @@ -53,8 +53,15 @@ class StorecoveAdapter private string $nexus; + private bool $has_error = false; + public function validate(): self { + + if ($this->has_error) { + return $this; + } + return $this; } @@ -97,14 +104,6 @@ class StorecoveAdapter $storecove_object = $serializer->normalize($obj, null, [\Symfony\Component\Serializer\Normalizer\AbstractObjectNormalizer::SKIP_NULL_VALUES => true]); - // return $storecove_object; - // $storecove_object = $serializer->encode($storecove_object, 'json', $context); - // return $storecove_object; - // return $data; - // $object = $serializer->denormalize(json_encode($storecove_object['document']['invoice']), \App\Services\EDocument\Gateway\Storecove\Models\Invoice::class, 'json', [\Symfony\Component\Serializer\Normalizer\AbstractObjectNormalizer::SKIP_NULL_VALUES => true]); - - // return $storecove_object; - return $serializer->deserialize(json_encode($storecove_object), \App\Services\EDocument\Gateway\Storecove\Models\Invoice::class, 'json', $context); } @@ -117,26 +116,33 @@ class StorecoveAdapter */ public function transform($invoice): self { - $this->ninja_invoice = $invoice; - $serializer = $this->getSerializer(); + try { + $this->ninja_invoice = $invoice; + $serializer = $this->getSerializer(); - /** Currently - due to class structures, the serialization process goes like this: - * - * e-invoice => Peppol -> XML -> Peppol Decoded -> encode to Peppol -> deserialize to Storecove - */ - $p = (new Peppol($invoice))->run()->toXml(); - $context = [ - DateTimeNormalizer::FORMAT_KEY => 'Y-m-d', - AbstractObjectNormalizer::SKIP_NULL_VALUES => true, - ]; + /** Currently - due to class structures, the serialization process goes like this: + * + * e-invoice => Peppol -> XML -> Peppol Decoded -> encode to Peppol -> deserialize to Storecove + */ + $p = (new Peppol($invoice))->run()->toXml(); + $context = [ + DateTimeNormalizer::FORMAT_KEY => 'Y-m-d', + AbstractObjectNormalizer::SKIP_NULL_VALUES => true, + ]; - $e = new \InvoiceNinja\EInvoice\EInvoice(); - $peppolInvoice = $e->decode('Peppol', $p, 'xml'); - $parent = \App\Services\EDocument\Gateway\Storecove\Models\Invoice::class; - $peppolInvoice = $e->encode($peppolInvoice, 'json'); - $this->storecove_invoice = $serializer->deserialize($peppolInvoice, $parent, 'json', $context); + $e = new \InvoiceNinja\EInvoice\EInvoice(); + $peppolInvoice = $e->decode('Peppol', $p, 'xml'); + $parent = \App\Services\EDocument\Gateway\Storecove\Models\Invoice::class; + $peppolInvoice = $e->encode($peppolInvoice, 'json'); + $this->storecove_invoice = $serializer->deserialize($peppolInvoice, $parent, 'json', $context); - $this->buildNexus(); + $this->buildNexus(); + } + catch(\Throwable $th){ + + $this->addError($th->getMessage()); + $this->has_error = true; + } return $this; @@ -149,6 +155,9 @@ class StorecoveAdapter public function decorate(): self { + if($this->has_error) + return $this; + //set all taxmap countries - resolve the taxing country $lines = $this->storecove_invoice->getInvoiceLines(); @@ -298,6 +307,11 @@ class StorecoveAdapter */ public function getDocument(): mixed { + + if($this->has_error) + return ['errors' => $this->getErrors(), 'document' => false]; + + $serializer = $this->getSerializer(); $context = [ diff --git a/app/Services/EDocument/Standards/Peppol.php b/app/Services/EDocument/Standards/Peppol.php index 7c6946b3f3..07ebd252c5 100644 --- a/app/Services/EDocument/Standards/Peppol.php +++ b/app/Services/EDocument/Standards/Peppol.php @@ -155,6 +155,8 @@ class Peppol extends AbstractService private string $tax_category_id; + private array $errors = []; + public function __construct(public Invoice $invoice) { $this->company = $invoice->company; @@ -171,69 +173,68 @@ class Peppol extends AbstractService */ public function run(): self { - $this->getJurisdiction(); //Sets the nexus object into the Peppol document. - $this->getAllUsedTaxes(); //Maps all used line item taxes + try { + $this->getJurisdiction(); //Sets the nexus object into the Peppol document. + $this->getAllUsedTaxes(); //Maps all used line item taxes - /** Invoice Level Props */ - $id = new \InvoiceNinja\EInvoice\Models\Peppol\IdentifierType\CustomizationID(); - $id->value = $this->customizationID; - $this->p_invoice->CustomizationID = $id; + /** Invoice Level Props */ + $id = new \InvoiceNinja\EInvoice\Models\Peppol\IdentifierType\CustomizationID(); + $id->value = $this->customizationID; + $this->p_invoice->CustomizationID = $id; - $id = new \InvoiceNinja\EInvoice\Models\Peppol\IdentifierType\ProfileID(); - $id->value = $this->profileID; - $this->p_invoice->ProfileID = $id; + $id = new \InvoiceNinja\EInvoice\Models\Peppol\IdentifierType\ProfileID(); + $id->value = $this->profileID; + $this->p_invoice->ProfileID = $id; - $this->p_invoice->ID = $this->invoice->number; - $this->p_invoice->IssueDate = new \DateTime($this->invoice->date); + $this->p_invoice->ID = $this->invoice->number; + $this->p_invoice->IssueDate = new \DateTime($this->invoice->date); - if($this->invoice->due_date) - $this->p_invoice->DueDate = new \DateTime($this->invoice->due_date); + if($this->invoice->due_date) + $this->p_invoice->DueDate = new \DateTime($this->invoice->due_date); - if(strlen($this->invoice->public_notes ?? '') > 0) - $this->p_invoice->Note = strip_tags($this->invoice->public_notes); + if(strlen($this->invoice->public_notes ?? '') > 0) + $this->p_invoice->Note = strip_tags($this->invoice->public_notes); - $this->p_invoice->DocumentCurrencyCode = $this->invoice->client->currency()->code; + $this->p_invoice->DocumentCurrencyCode = $this->invoice->client->currency()->code; - if ($this->invoice->date && $this->invoice->due_date) { - $ip = new InvoicePeriod(); - $ip->StartDate = new \DateTime($this->invoice->date); - $ip->EndDate = new \DateTime($this->invoice->due_date); - $this->p_invoice->InvoicePeriod = [$ip]; + if ($this->invoice->date && $this->invoice->due_date) { + $ip = new InvoicePeriod(); + $ip->StartDate = new \DateTime($this->invoice->date); + $ip->EndDate = new \DateTime($this->invoice->due_date); + $this->p_invoice->InvoicePeriod = [$ip]; + } + + if ($this->invoice->project_id) { + $pr = new \InvoiceNinja\EInvoice\Models\Peppol\ProjectReferenceType\ProjectReference(); + $id = new \InvoiceNinja\EInvoice\Models\Peppol\IdentifierType\ID(); + $id->value = $this->invoice->project->number; + $pr->ID = $id; + $this->p_invoice->ProjectReference = [$pr]; + } + + /** Auto switch between Invoice / Credit based on the amount value */ + $this->p_invoice->InvoiceTypeCode = ($this->invoice->amount >= 0) ? 380 : 381; + + $this->p_invoice->AccountingSupplierParty = $this->getAccountingSupplierParty(); + $this->p_invoice->AccountingCustomerParty = $this->getAccountingCustomerParty(); + $this->p_invoice->InvoiceLine = $this->getInvoiceLines(); + $this->p_invoice->AllowanceCharge = $this->getAllowanceCharges(); + $this->p_invoice->LegalMonetaryTotal = $this->getLegalMonetaryTotal(); + $this->p_invoice->Delivery = $this->getDelivery(); + + $this->setOrderReference()->setTaxBreakdown(); + + //isolate this class to only peppol changes + $this->p_invoice = $this->gateway + ->mutator + ->senderSpecificLevelMutators() + ->receiverSpecificLevelMutators() + ->getPeppol(); + + }catch(\Throwable $th) { + nlog("Unable to create Peppol Invoice" . $th->getMessage()); + $this->errors[] = $th->getMessage(); } - - if ($this->invoice->project_id) { - $pr = new \InvoiceNinja\EInvoice\Models\Peppol\ProjectReferenceType\ProjectReference(); - $id = new \InvoiceNinja\EInvoice\Models\Peppol\IdentifierType\ID(); - $id->value = $this->invoice->project->number; - $pr->ID = $id; - $this->p_invoice->ProjectReference = [$pr]; - } - - /** Auto switch between Invoice / Credit based on the amount value */ - $this->p_invoice->InvoiceTypeCode = ($this->invoice->amount >= 0) ? 380 : 381; - - $this->p_invoice->AccountingSupplierParty = $this->getAccountingSupplierParty(); - $this->p_invoice->AccountingCustomerParty = $this->getAccountingCustomerParty(); - $this->p_invoice->InvoiceLine = $this->getInvoiceLines(); - $this->p_invoice->AllowanceCharge = $this->getAllowanceCharges(); - $this->p_invoice->LegalMonetaryTotal = $this->getLegalMonetaryTotal(); - $this->p_invoice->Delivery = $this->getDelivery(); - - $this->setOrderReference()->setTaxBreakdown(); - - //isolate this class to only peppol changes - $this->p_invoice = $this->gateway - ->mutator - ->senderSpecificLevelMutators() - ->receiverSpecificLevelMutators() - ->getPeppol(); - - //** @todo double check this logic, this will only ever write the doc once */ - // if(is_null($this->invoice->backup)) - // { - // $this->invoice->e_invoice = $this->toObject(); - // $this->invoice->save(); - // } return $this; @@ -1451,4 +1452,9 @@ class Peppol extends AbstractService return '0037'; } + public function getErrors(): array + { + return $this->errors; + } + } diff --git a/app/Services/EDocument/Standards/Validation/Peppol/EntityLevel.php b/app/Services/EDocument/Standards/Validation/Peppol/EntityLevel.php index fcf451f39d..57b57990d4 100644 --- a/app/Services/EDocument/Standards/Validation/Peppol/EntityLevel.php +++ b/app/Services/EDocument/Standards/Validation/Peppol/EntityLevel.php @@ -26,6 +26,39 @@ use XSLTProcessor; class EntityLevel { + private array $eu_country_codes = [ + 'AT', // Austria + 'BE', // Belgium + 'BG', // Bulgaria + 'CY', // Cyprus + 'CZ', // Czech Republic + 'DE', // Germany + 'DK', // Denmark + 'EE', // Estonia + 'ES', // Spain + 'ES-CN', // Canary Islands + 'ES-CE', // Ceuta + 'ES-ML', // Melilla + 'FI', // Finland + 'FR', // France + 'GR', // Greece + 'HR', // Croatia + 'HU', // Hungary + 'IE', // Ireland + 'IT', // Italy + 'LT', // Lithuania + 'LU', // Luxembourg + 'LV', // Latvia + 'MT', // Malta + 'NL', // Netherlands + 'PL', // Poland + 'PT', // Portugal + 'RO', // Romania + 'SE', // Sweden + 'SI', // Slovenia + 'SK', // Slovakia + ]; + private array $client_fields = [ 'address1', 'city', @@ -110,10 +143,22 @@ class EntityLevel try{ $xml = $p->run()->toXml(); + + if(count($p->getErrors()) >= 1){ + + foreach($p->getErrors() as $error) + { + $this->errors['invoice'][] = ['field' => $error, 'label' => 'error']; + } + } + } catch(PeppolValidationException $e) { $this->errors['invoice'] = ['field' => $e->getInvalidField(), 'label' => $e->getInvalidField()]; - }; + } + catch(\Throwable $th){ + + } if($xml){ // Second pass through the XSLT validator @@ -158,8 +203,8 @@ class EntityLevel } - //If not an individual, you MUST have a VAT number - if (!in_array($client->classification, ['government','individual']) && !$this->validString($client->vat_number)) { + //If not an individual, you MUST have a VAT number if you are in the EU + if (!in_array($client->classification, ['government', 'individual']) && in_array($client->country->iso_3166_2, $this->eu_country_codes) && !$this->validString($client->vat_number)) { $errors[] = ['field' => 'vat_number', 'label' => ctrans("texts.vat_number")]; } diff --git a/composer.json b/composer.json index 14bd9a42da..40f56a3122 100644 --- a/composer.json +++ b/composer.json @@ -90,7 +90,7 @@ "predis/predis": "^2", "psr/http-message": "^1.0", "pusher/pusher-php-server": "^7.2", - "quickbooks/v3-php-sdk": "6.1.4-alpha", + "quickbooks/v3-php-sdk": "^6.1", "razorpay/razorpay": "2.*", "sentry/sentry-laravel": "^4", "setasign/fpdf": "^1.8", @@ -218,12 +218,8 @@ { "type": "vcs", "url": "https://github.com/turbo124/snappdf" - }, - { - "type": "vcs", - "url": "https://github.com/karneaud/QuickBooks-V3-PHP-SDK.git" } ], "minimum-stability": "dev", "prefer-stable": true -} \ No newline at end of file +} diff --git a/composer.lock b/composer.lock index 431b27f034..387fa06c8a 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "6e2c50d0b6035b9a6f170107817df089", + "content-hash": "4852ecaf52da09e731a6abc1906aebc9", "packages": [ { "name": "adrienrn/php-mimetyper", @@ -535,16 +535,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.325.5", + "version": "3.327.1", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "195d003c902a741de53008c839cbcebddbe1f326" + "reference": "3d52ec587989b136e486f94eff3dd316465aeb42" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/195d003c902a741de53008c839cbcebddbe1f326", - "reference": "195d003c902a741de53008c839cbcebddbe1f326", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/3d52ec587989b136e486f94eff3dd316465aeb42", + "reference": "3d52ec587989b136e486f94eff3dd316465aeb42", "shasum": "" }, "require": { @@ -627,9 +627,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.325.5" + "source": "https://github.com/aws/aws-sdk-php/tree/3.327.1" }, - "time": "2024-11-08T19:12:57+00:00" + "time": "2024-11-15T01:53:30+00:00" }, { "name": "babenkoivan/elastic-adapter", @@ -2225,16 +2225,16 @@ }, { "name": "elasticsearch/elasticsearch", - "version": "v8.15.0", + "version": "v8.16.0", "source": { "type": "git", "url": "https://github.com/elastic/elasticsearch-php.git", - "reference": "34c2444fa8d4c3e6c8b009bd8dea90bca007203b" + "reference": "ab0fdb43f9e69f0d0539028d8b0b56cdf3328d85" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/elastic/elasticsearch-php/zipball/34c2444fa8d4c3e6c8b009bd8dea90bca007203b", - "reference": "34c2444fa8d4c3e6c8b009bd8dea90bca007203b", + "url": "https://api.github.com/repos/elastic/elasticsearch-php/zipball/ab0fdb43f9e69f0d0539028d8b0b56cdf3328d85", + "reference": "ab0fdb43f9e69f0d0539028d8b0b56cdf3328d85", "shasum": "" }, "require": { @@ -2277,9 +2277,9 @@ ], "support": { "issues": "https://github.com/elastic/elasticsearch-php/issues", - "source": "https://github.com/elastic/elasticsearch-php/tree/v8.15.0" + "source": "https://github.com/elastic/elasticsearch-php/tree/v8.16.0" }, - "time": "2024-08-14T14:32:50+00:00" + "time": "2024-11-14T22:23:33+00:00" }, { "name": "endroid/qr-code", @@ -2358,16 +2358,16 @@ }, { "name": "eway/eway-rapid-php", - "version": "1.4.1", + "version": "1.4.2", "source": { "type": "git", "url": "https://github.com/eWAYPayment/eway-rapid-php.git", - "reference": "3ccc17406101db7e6670b2e76b088124c6955c14" + "reference": "9d0b74fb0710f9f1ffeb015d198fc85b083ab5ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/eWAYPayment/eway-rapid-php/zipball/3ccc17406101db7e6670b2e76b088124c6955c14", - "reference": "3ccc17406101db7e6670b2e76b088124c6955c14", + "url": "https://api.github.com/repos/eWAYPayment/eway-rapid-php/zipball/9d0b74fb0710f9f1ffeb015d198fc85b083ab5ba", + "reference": "9d0b74fb0710f9f1ffeb015d198fc85b083ab5ba", "shasum": "" }, "require": { @@ -2394,11 +2394,11 @@ ], "authors": [ { - "name": "eWAY", + "name": "Eway", "homepage": "https://www.eway.com.au" } ], - "description": "eWAY Rapid PHP library", + "description": "Eway Rapid PHP library", "homepage": "https://www.eway.com.au", "keywords": [ "eway", @@ -2408,9 +2408,9 @@ ], "support": { "issues": "https://github.com/eWAYPayment/eway-rapid-php/issues", - "source": "https://github.com/eWAYPayment/eway-rapid-php/tree/v1.4.1" + "source": "https://github.com/eWAYPayment/eway-rapid-php/tree/v1.4.2" }, - "time": "2022-08-04T05:24:33+00:00" + "time": "2024-11-11T01:31:31+00:00" }, { "name": "fakerphp/faker", @@ -2858,16 +2858,16 @@ }, { "name": "google/apiclient-services", - "version": "v0.380.0", + "version": "v0.381.0", "source": { "type": "git", "url": "https://github.com/googleapis/google-api-php-client-services.git", - "reference": "a706b940e309d6cd858eee6a394e89fa17310c93" + "reference": "e26fd3ea9c1931f205481843519b8fdc166e7026" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/a706b940e309d6cd858eee6a394e89fa17310c93", - "reference": "a706b940e309d6cd858eee6a394e89fa17310c93", + "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/e26fd3ea9c1931f205481843519b8fdc166e7026", + "reference": "e26fd3ea9c1931f205481843519b8fdc166e7026", "shasum": "" }, "require": { @@ -2896,9 +2896,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.380.0" + "source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.381.0" }, - "time": "2024-11-03T01:06:19+00:00" + "time": "2024-11-11T01:08:23+00:00" }, { "name": "google/auth", @@ -3886,16 +3886,16 @@ }, { "name": "horstoeko/zugferd", - "version": "v1.0.76", + "version": "v1.0.78", "source": { "type": "git", "url": "https://github.com/horstoeko/zugferd.git", - "reference": "74bd98c0fa883048f80563e08042556f8f0294ce" + "reference": "bacbe6707eacfc135254774f2ff164e4091168ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/horstoeko/zugferd/zipball/74bd98c0fa883048f80563e08042556f8f0294ce", - "reference": "74bd98c0fa883048f80563e08042556f8f0294ce", + "url": "https://api.github.com/repos/horstoeko/zugferd/zipball/bacbe6707eacfc135254774f2ff164e4091168ea", + "reference": "bacbe6707eacfc135254774f2ff164e4091168ea", "shasum": "" }, "require": { @@ -3955,9 +3955,9 @@ ], "support": { "issues": "https://github.com/horstoeko/zugferd/issues", - "source": "https://github.com/horstoeko/zugferd/tree/v1.0.76" + "source": "https://github.com/horstoeko/zugferd/tree/v1.0.78" }, - "time": "2024-11-03T09:05:21+00:00" + "time": "2024-11-11T10:59:22+00:00" }, { "name": "horstoeko/zugferdvisualizer", @@ -4888,16 +4888,16 @@ }, { "name": "laravel/framework", - "version": "v11.30.0", + "version": "v11.31.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "dff716442d9c229d716be82ccc9a7de52eb97193" + "reference": "365090ed2c68244e3141cdb5e247cdf3dfba2c40" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/dff716442d9c229d716be82ccc9a7de52eb97193", - "reference": "dff716442d9c229d716be82ccc9a7de52eb97193", + "url": "https://api.github.com/repos/laravel/framework/zipball/365090ed2c68244e3141cdb5e247cdf3dfba2c40", + "reference": "365090ed2c68244e3141cdb5e247cdf3dfba2c40", "shasum": "" }, "require": { @@ -5093,20 +5093,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2024-10-30T15:00:34+00:00" + "time": "2024-11-12T15:36:15+00:00" }, { "name": "laravel/prompts", - "version": "v0.3.1", + "version": "v0.3.2", "source": { "type": "git", "url": "https://github.com/laravel/prompts.git", - "reference": "0f3848a445562dac376b27968f753c65e7e1036e" + "reference": "0e0535747c6b8d6d10adca8b68293cf4517abb0f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/0f3848a445562dac376b27968f753c65e7e1036e", - "reference": "0f3848a445562dac376b27968f753c65e7e1036e", + "url": "https://api.github.com/repos/laravel/prompts/zipball/0e0535747c6b8d6d10adca8b68293cf4517abb0f", + "reference": "0e0535747c6b8d6d10adca8b68293cf4517abb0f", "shasum": "" }, "require": { @@ -5122,7 +5122,7 @@ "require-dev": { "illuminate/collections": "^10.0|^11.0", "mockery/mockery": "^1.5", - "pestphp/pest": "^2.3", + "pestphp/pest": "^2.3|^3.4", "phpstan/phpstan": "^1.11", "phpstan/phpstan-mockery": "^1.1" }, @@ -5150,22 +5150,22 @@ "description": "Add beautiful and user-friendly forms to your command-line applications.", "support": { "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.3.1" + "source": "https://github.com/laravel/prompts/tree/v0.3.2" }, - "time": "2024-10-09T19:42:26+00:00" + "time": "2024-11-12T14:59:47+00:00" }, { "name": "laravel/scout", - "version": "v10.11.5", + "version": "v10.11.7", "source": { "type": "git", "url": "https://github.com/laravel/scout.git", - "reference": "e67e2015e2f6f15e0fa033fb2ceb248ba8c5fa36" + "reference": "d4c0bbc41f52b4bf315914cfc7046fd485e8d92d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/scout/zipball/e67e2015e2f6f15e0fa033fb2ceb248ba8c5fa36", - "reference": "e67e2015e2f6f15e0fa033fb2ceb248ba8c5fa36", + "url": "https://api.github.com/repos/laravel/scout/zipball/d4c0bbc41f52b4bf315914cfc7046fd485e8d92d", + "reference": "d4c0bbc41f52b4bf315914cfc7046fd485e8d92d", "shasum": "" }, "require": { @@ -5179,8 +5179,11 @@ "php": "^8.0", "symfony/console": "^6.0|^7.0" }, + "conflict": { + "algolia/algoliasearch-client-php": "<3.2.0|>=5.0.0" + }, "require-dev": { - "algolia/algoliasearch-client-php": "^3.2", + "algolia/algoliasearch-client-php": "^3.2|^4.0", "meilisearch/meilisearch-php": "^1.0", "mockery/mockery": "^1.0", "orchestra/testbench": "^7.31|^8.11|^9.0", @@ -5230,20 +5233,20 @@ "issues": "https://github.com/laravel/scout/issues", "source": "https://github.com/laravel/scout" }, - "time": "2024-10-30T15:09:56+00:00" + "time": "2024-11-13T09:41:16+00:00" }, { "name": "laravel/serializable-closure", - "version": "v1.3.5", + "version": "v1.3.6", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "1dc4a3dbfa2b7628a3114e43e32120cce7cdda9c" + "reference": "f865a58ea3a0107c336b7045104c75243fa59d96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/1dc4a3dbfa2b7628a3114e43e32120cce7cdda9c", - "reference": "1dc4a3dbfa2b7628a3114e43e32120cce7cdda9c", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/f865a58ea3a0107c336b7045104c75243fa59d96", + "reference": "f865a58ea3a0107c336b7045104c75243fa59d96", "shasum": "" }, "require": { @@ -5291,7 +5294,7 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2024-09-23T13:33:08+00:00" + "time": "2024-11-11T17:06:04+00:00" }, { "name": "laravel/slack-notification-channel", @@ -6948,16 +6951,16 @@ }, { "name": "monolog/monolog", - "version": "3.7.0", + "version": "3.8.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "f4393b648b78a5408747de94fca38beb5f7e9ef8" + "reference": "32e515fdc02cdafbe4593e30a9350d486b125b67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f4393b648b78a5408747de94fca38beb5f7e9ef8", - "reference": "f4393b648b78a5408747de94fca38beb5f7e9ef8", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/32e515fdc02cdafbe4593e30a9350d486b125b67", + "reference": "32e515fdc02cdafbe4593e30a9350d486b125b67", "shasum": "" }, "require": { @@ -6977,12 +6980,14 @@ "guzzlehttp/psr7": "^2.2", "mongodb/mongodb": "^1.8", "php-amqplib/php-amqplib": "~2.4 || ^3", - "phpstan/phpstan": "^1.9", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-strict-rules": "^1.4", - "phpunit/phpunit": "^10.5.17", + "php-console/php-console": "^3.1.8", + "phpstan/phpstan": "^2", + "phpstan/phpstan-deprecation-rules": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "^10.5.17 || ^11.0.7", "predis/predis": "^1.1 || ^2", - "ruflin/elastica": "^7", + "rollbar/rollbar": "^4.0", + "ruflin/elastica": "^7 || ^8", "symfony/mailer": "^5.4 || ^6", "symfony/mime": "^5.4 || ^6" }, @@ -7033,7 +7038,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.7.0" + "source": "https://github.com/Seldaek/monolog/tree/3.8.0" }, "funding": [ { @@ -7045,7 +7050,7 @@ "type": "tidelift" } ], - "time": "2024-06-28T09:40:51+00:00" + "time": "2024-11-12T13:57:08+00:00" }, { "name": "mpdf/mpdf", @@ -8960,16 +8965,16 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.5.1", + "version": "5.6.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "0c70d2c566e899666f367ab7b80986beb3581e6f" + "reference": "f3558a4c23426d12bffeaab463f8a8d8b681193c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/0c70d2c566e899666f367ab7b80986beb3581e6f", - "reference": "0c70d2c566e899666f367ab7b80986beb3581e6f", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/f3558a4c23426d12bffeaab463f8a8d8b681193c", + "reference": "f3558a4c23426d12bffeaab463f8a8d8b681193c", "shasum": "" }, "require": { @@ -8978,7 +8983,7 @@ "php": "^7.4 || ^8.0", "phpdocumentor/reflection-common": "^2.2", "phpdocumentor/type-resolver": "^1.7", - "phpstan/phpdoc-parser": "^1.7", + "phpstan/phpdoc-parser": "^1.7|^2.0", "webmozart/assert": "^1.9.1" }, "require-dev": { @@ -9018,9 +9023,9 @@ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.5.1" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.0" }, - "time": "2024-11-06T11:58:54+00:00" + "time": "2024-11-12T11:25:25+00:00" }, { "name": "phpdocumentor/type-resolver", @@ -9082,16 +9087,16 @@ }, { "name": "phpoffice/phpspreadsheet", - "version": "2.3.0", + "version": "2.3.2", "source": { "type": "git", "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", - "reference": "c972c146ddd5e8350ea839355b9bb0ce6a8fa33e" + "reference": "08d4e08cf0c7e6182750cef7958b860b8c7f10ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/c972c146ddd5e8350ea839355b9bb0ce6a8fa33e", - "reference": "c972c146ddd5e8350ea839355b9bb0ce6a8fa33e", + "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/08d4e08cf0c7e6182750cef7958b860b8c7f10ad", + "reference": "08d4e08cf0c7e6182750cef7958b860b8c7f10ad", "shasum": "" }, "require": { @@ -9180,9 +9185,9 @@ ], "support": { "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues", - "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/2.3.0" + "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/2.3.2" }, - "time": "2024-09-29T07:06:02+00:00" + "time": "2024-11-10T09:35:47+00:00" }, { "name": "phpoption/phpoption", @@ -10132,21 +10137,22 @@ }, { "name": "quickbooks/v3-php-sdk", - "version": "v6.1.4-alpha", + "version": "v6.1.4", "source": { "type": "git", - "url": "https://github.com/karneaud/QuickBooks-V3-PHP-SDK.git", - "reference": "89ff2b6dcfc94634cf5806cacda1286a6898249f" + "url": "https://github.com/intuit/QuickBooks-V3-PHP-SDK.git", + "reference": "b6c8ab787e296aca3a713ff7944caba5b04dde41" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/karneaud/QuickBooks-V3-PHP-SDK/zipball/89ff2b6dcfc94634cf5806cacda1286a6898249f", - "reference": "89ff2b6dcfc94634cf5806cacda1286a6898249f", + "url": "https://api.github.com/repos/intuit/QuickBooks-V3-PHP-SDK/zipball/b6c8ab787e296aca3a713ff7944caba5b04dde41", + "reference": "b6c8ab787e296aca3a713ff7944caba5b04dde41", "shasum": "" }, "require": { "ext-dom": "*", "ext-mbstring": "*", + "guzzlehttp/guzzle": "^7.9", "php": ">=5.6.0" }, "require-dev": { @@ -10164,15 +10170,7 @@ "QuickBooksOnline\\API\\": "src/" } }, - "archive": { - "exclude": [ - "/docs", - "/src/Utility.Test", - "/src/XSD2PHP/docs", - "/src/XSD2PHP/test", - "/test" - ] - }, + "notification-url": "https://packagist.org/downloads/", "license": [ "Apache-2.0" ], @@ -10192,9 +10190,10 @@ "smallbusiness" ], "support": { - "source": "https://github.com/karneaud/QuickBooks-V3-PHP-SDK/tree/v6.1.4-alpha" + "issues": "https://github.com/intuit/QuickBooks-V3-PHP-SDK/issues", + "source": "https://github.com/intuit/QuickBooks-V3-PHP-SDK/tree/v6.1.4" }, - "time": "2024-08-16T01:21:19+00:00" + "time": "2024-08-27T06:58:32+00:00" }, { "name": "ralouphie/getallheaders", @@ -11191,16 +11190,16 @@ }, { "name": "socialiteproviders/manager", - "version": "v4.6.0", + "version": "v4.7.0", "source": { "type": "git", "url": "https://github.com/SocialiteProviders/Manager.git", - "reference": "dea5190981c31b89e52259da9ab1ca4e2b258b21" + "reference": "ab0691b82cec77efd90154c78f1854903455c82f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/SocialiteProviders/Manager/zipball/dea5190981c31b89e52259da9ab1ca4e2b258b21", - "reference": "dea5190981c31b89e52259da9ab1ca4e2b258b21", + "url": "https://api.github.com/repos/SocialiteProviders/Manager/zipball/ab0691b82cec77efd90154c78f1854903455c82f", + "reference": "ab0691b82cec77efd90154c78f1854903455c82f", "shasum": "" }, "require": { @@ -11261,7 +11260,7 @@ "issues": "https://github.com/socialiteproviders/manager/issues", "source": "https://github.com/socialiteproviders/manager" }, - "time": "2024-05-04T07:57:39+00:00" + "time": "2024-11-10T01:56:18+00:00" }, { "name": "socialiteproviders/microsoft", @@ -11315,16 +11314,16 @@ }, { "name": "sprain/swiss-qr-bill", - "version": "v4.15", + "version": "v4.16", "source": { "type": "git", "url": "https://github.com/sprain/php-swiss-qr-bill.git", - "reference": "4af926feb0b5c5cfa79f65fff9268c4ffe9ef84c" + "reference": "bc66bbc144c464af95b7fcd63a425b598b85b5ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sprain/php-swiss-qr-bill/zipball/4af926feb0b5c5cfa79f65fff9268c4ffe9ef84c", - "reference": "4af926feb0b5c5cfa79f65fff9268c4ffe9ef84c", + "url": "https://api.github.com/repos/sprain/php-swiss-qr-bill/zipball/bc66bbc144c464af95b7fcd63a425b598b85b5ec", + "reference": "bc66bbc144c464af95b7fcd63a425b598b85b5ec", "shasum": "" }, "require": { @@ -11372,7 +11371,7 @@ "description": "A PHP library to create Swiss QR bills", "support": { "issues": "https://github.com/sprain/php-swiss-qr-bill/issues", - "source": "https://github.com/sprain/php-swiss-qr-bill/tree/v4.15" + "source": "https://github.com/sprain/php-swiss-qr-bill/tree/v4.16" }, "funding": [ { @@ -11380,7 +11379,7 @@ "type": "github" } ], - "time": "2024-10-22T19:04:46+00:00" + "time": "2024-11-10T10:48:53+00:00" }, { "name": "square/square", @@ -11642,16 +11641,16 @@ }, { "name": "symfony/console", - "version": "v7.1.7", + "version": "v7.1.8", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "3284aafcac338b6e86fd955ee4d794cbe434151a" + "reference": "ff04e5b5ba043d2badfb308197b9e6b42883fcd5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/3284aafcac338b6e86fd955ee4d794cbe434151a", - "reference": "3284aafcac338b6e86fd955ee4d794cbe434151a", + "url": "https://api.github.com/repos/symfony/console/zipball/ff04e5b5ba043d2badfb308197b9e6b42883fcd5", + "reference": "ff04e5b5ba043d2badfb308197b9e6b42883fcd5", "shasum": "" }, "require": { @@ -11715,7 +11714,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.1.7" + "source": "https://github.com/symfony/console/tree/v7.1.8" }, "funding": [ { @@ -11731,7 +11730,7 @@ "type": "tidelift" } ], - "time": "2024-11-05T15:34:55+00:00" + "time": "2024-11-06T14:23:19+00:00" }, { "name": "symfony/css-selector", @@ -12228,16 +12227,16 @@ }, { "name": "symfony/http-client", - "version": "v6.4.14", + "version": "v6.4.15", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "05d88cbd816ad6e0202edd9a9963cb9d615b8826" + "reference": "cb4073c905cd12b8496d24ac428a9228c1750670" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/05d88cbd816ad6e0202edd9a9963cb9d615b8826", - "reference": "05d88cbd816ad6e0202edd9a9963cb9d615b8826", + "url": "https://api.github.com/repos/symfony/http-client/zipball/cb4073c905cd12b8496d24ac428a9228c1750670", + "reference": "cb4073c905cd12b8496d24ac428a9228c1750670", "shasum": "" }, "require": { @@ -12301,7 +12300,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v6.4.14" + "source": "https://github.com/symfony/http-client/tree/v6.4.15" }, "funding": [ { @@ -12317,7 +12316,7 @@ "type": "tidelift" } ], - "time": "2024-11-05T16:39:55+00:00" + "time": "2024-11-13T13:40:18+00:00" }, { "name": "symfony/http-client-contracts", @@ -12399,16 +12398,16 @@ }, { "name": "symfony/http-foundation", - "version": "v7.1.7", + "version": "v7.1.8", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "5183b61657807099d98f3367bcccb850238b17a9" + "reference": "f4419ec69ccfc3f725a4de7c20e4e57626d10112" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/5183b61657807099d98f3367bcccb850238b17a9", - "reference": "5183b61657807099d98f3367bcccb850238b17a9", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/f4419ec69ccfc3f725a4de7c20e4e57626d10112", + "reference": "f4419ec69ccfc3f725a4de7c20e4e57626d10112", "shasum": "" }, "require": { @@ -12418,12 +12417,12 @@ }, "conflict": { "doctrine/dbal": "<3.6", - "symfony/cache": "<6.4" + "symfony/cache": "<6.4.12|>=7.0,<7.1.5" }, "require-dev": { "doctrine/dbal": "^3.6|^4", "predis/predis": "^1.1|^2.0", - "symfony/cache": "^6.4|^7.0", + "symfony/cache": "^6.4.12|^7.1.5", "symfony/dependency-injection": "^6.4|^7.0", "symfony/expression-language": "^6.4|^7.0", "symfony/http-kernel": "^6.4|^7.0", @@ -12456,7 +12455,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.1.7" + "source": "https://github.com/symfony/http-foundation/tree/v7.1.8" }, "funding": [ { @@ -12472,20 +12471,20 @@ "type": "tidelift" } ], - "time": "2024-11-06T09:02:46+00:00" + "time": "2024-11-09T09:16:45+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.1.7", + "version": "v7.1.8", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "7f137cda31fd41e422edcdc01915f2c095b84399" + "reference": "33fef24e3dc79d6d30bf4936531f2f4bd2ca189e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/7f137cda31fd41e422edcdc01915f2c095b84399", - "reference": "7f137cda31fd41e422edcdc01915f2c095b84399", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/33fef24e3dc79d6d30bf4936531f2f4bd2ca189e", + "reference": "33fef24e3dc79d6d30bf4936531f2f4bd2ca189e", "shasum": "" }, "require": { @@ -12570,7 +12569,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v7.1.7" + "source": "https://github.com/symfony/http-kernel/tree/v7.1.8" }, "funding": [ { @@ -12586,20 +12585,20 @@ "type": "tidelift" } ], - "time": "2024-11-06T09:54:34+00:00" + "time": "2024-11-13T14:25:32+00:00" }, { "name": "symfony/intl", - "version": "v7.1.7", + "version": "v7.1.8", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "4770ebd8f6d96c6bff8ad2c76ffcf02955acfd49" + "reference": "e56b243fc0afa5a12bd11dace4002ada5a7d99f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/4770ebd8f6d96c6bff8ad2c76ffcf02955acfd49", - "reference": "4770ebd8f6d96c6bff8ad2c76ffcf02955acfd49", + "url": "https://api.github.com/repos/symfony/intl/zipball/e56b243fc0afa5a12bd11dace4002ada5a7d99f8", + "reference": "e56b243fc0afa5a12bd11dace4002ada5a7d99f8", "shasum": "" }, "require": { @@ -12656,7 +12655,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v7.1.7" + "source": "https://github.com/symfony/intl/tree/v7.1.8" }, "funding": [ { @@ -12672,7 +12671,7 @@ "type": "tidelift" } ], - "time": "2024-11-05T15:34:55+00:00" + "time": "2024-11-08T15:46:42+00:00" }, { "name": "symfony/mailer", @@ -13918,16 +13917,16 @@ }, { "name": "symfony/process", - "version": "v7.1.7", + "version": "v7.1.8", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "9b8a40b7289767aa7117e957573c2a535efe6585" + "reference": "42783370fda6e538771f7c7a36e9fa2ee3a84892" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/9b8a40b7289767aa7117e957573c2a535efe6585", - "reference": "9b8a40b7289767aa7117e957573c2a535efe6585", + "url": "https://api.github.com/repos/symfony/process/zipball/42783370fda6e538771f7c7a36e9fa2ee3a84892", + "reference": "42783370fda6e538771f7c7a36e9fa2ee3a84892", "shasum": "" }, "require": { @@ -13959,7 +13958,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.1.7" + "source": "https://github.com/symfony/process/tree/v7.1.8" }, "funding": [ { @@ -13975,7 +13974,7 @@ "type": "tidelift" } ], - "time": "2024-11-06T09:25:12+00:00" + "time": "2024-11-06T14:23:19+00:00" }, { "name": "symfony/property-access", @@ -14055,16 +14054,16 @@ }, { "name": "symfony/property-info", - "version": "v7.1.6", + "version": "v7.1.8", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "6b630ff585d9fdc72f50369885ad4364a849cf02" + "reference": "3748f85f64351d282fd028e44309856f1d79142e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/6b630ff585d9fdc72f50369885ad4364a849cf02", - "reference": "6b630ff585d9fdc72f50369885ad4364a849cf02", + "url": "https://api.github.com/repos/symfony/property-info/zipball/3748f85f64351d282fd028e44309856f1d79142e", + "reference": "3748f85f64351d282fd028e44309856f1d79142e", "shasum": "" }, "require": { @@ -14080,7 +14079,7 @@ }, "require-dev": { "phpdocumentor/reflection-docblock": "^5.2", - "phpstan/phpdoc-parser": "^1.0", + "phpstan/phpdoc-parser": "^1.0|^2.0", "symfony/cache": "^6.4|^7.0", "symfony/dependency-injection": "^6.4|^7.0", "symfony/serializer": "^6.4|^7.0" @@ -14119,7 +14118,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v7.1.6" + "source": "https://github.com/symfony/property-info/tree/v7.1.8" }, "funding": [ { @@ -14135,7 +14134,7 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-11-09T07:07:11+00:00" }, { "name": "symfony/psr-http-message-bridge", @@ -14303,16 +14302,16 @@ }, { "name": "symfony/serializer", - "version": "v7.1.6", + "version": "v7.1.8", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "537f125ed7ddb8fffac34a83dfd6905e044ca76f" + "reference": "6066de113408496e1e3d4bf9e21fb209d344768b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/537f125ed7ddb8fffac34a83dfd6905e044ca76f", - "reference": "537f125ed7ddb8fffac34a83dfd6905e044ca76f", + "url": "https://api.github.com/repos/symfony/serializer/zipball/6066de113408496e1e3d4bf9e21fb209d344768b", + "reference": "6066de113408496e1e3d4bf9e21fb209d344768b", "shasum": "" }, "require": { @@ -14333,7 +14332,7 @@ }, "require-dev": { "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", - "phpstan/phpdoc-parser": "^1.0", + "phpstan/phpdoc-parser": "^1.0|^2.0", "seld/jsonlint": "^1.10", "symfony/cache": "^6.4|^7.0", "symfony/config": "^6.4|^7.0", @@ -14382,7 +14381,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v7.1.6" + "source": "https://github.com/symfony/serializer/tree/v7.1.8" }, "funding": [ { @@ -14398,7 +14397,7 @@ "type": "tidelift" } ], - "time": "2024-10-09T08:46:59+00:00" + "time": "2024-11-09T09:16:45+00:00" }, { "name": "symfony/service-contracts", @@ -14485,16 +14484,16 @@ }, { "name": "symfony/string", - "version": "v7.1.6", + "version": "v7.1.8", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "61b72d66bf96c360a727ae6232df5ac83c71f626" + "reference": "591ebd41565f356fcd8b090fe64dbb5878f50281" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/61b72d66bf96c360a727ae6232df5ac83c71f626", - "reference": "61b72d66bf96c360a727ae6232df5ac83c71f626", + "url": "https://api.github.com/repos/symfony/string/zipball/591ebd41565f356fcd8b090fe64dbb5878f50281", + "reference": "591ebd41565f356fcd8b090fe64dbb5878f50281", "shasum": "" }, "require": { @@ -14552,7 +14551,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.1.6" + "source": "https://github.com/symfony/string/tree/v7.1.8" }, "funding": [ { @@ -14568,7 +14567,7 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-11-13T13:31:21+00:00" }, { "name": "symfony/translation", @@ -14744,16 +14743,16 @@ }, { "name": "symfony/type-info", - "version": "v7.1.6", + "version": "v7.1.8", "source": { "type": "git", "url": "https://github.com/symfony/type-info.git", - "reference": "a13032128c307470955c45c99201349b15cd7f4a" + "reference": "51535dde21c7abf65c9d000a30bb15f6478195e6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/type-info/zipball/a13032128c307470955c45c99201349b15cd7f4a", - "reference": "a13032128c307470955c45c99201349b15cd7f4a", + "url": "https://api.github.com/repos/symfony/type-info/zipball/51535dde21c7abf65c9d000a30bb15f6478195e6", + "reference": "51535dde21c7abf65c9d000a30bb15f6478195e6", "shasum": "" }, "require": { @@ -14766,7 +14765,7 @@ "symfony/property-info": "<6.4" }, "require-dev": { - "phpstan/phpdoc-parser": "^1.0", + "phpstan/phpdoc-parser": "^1.0|^2.0", "symfony/dependency-injection": "^6.4|^7.0", "symfony/property-info": "^6.4|^7.0" }, @@ -14806,7 +14805,7 @@ "type" ], "support": { - "source": "https://github.com/symfony/type-info/tree/v7.1.6" + "source": "https://github.com/symfony/type-info/tree/v7.1.8" }, "funding": [ { @@ -14822,7 +14821,7 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-11-07T15:49:33+00:00" }, { "name": "symfony/uid", @@ -14900,16 +14899,16 @@ }, { "name": "symfony/validator", - "version": "v7.1.7", + "version": "v7.1.8", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "7ec52f844ee39f6d8120e421df75b972deff29eb" + "reference": "85a90c0a4ab0d10c118d3cdf39115e00d9cca7d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/7ec52f844ee39f6d8120e421df75b972deff29eb", - "reference": "7ec52f844ee39f6d8120e421df75b972deff29eb", + "url": "https://api.github.com/repos/symfony/validator/zipball/85a90c0a4ab0d10c118d3cdf39115e00d9cca7d0", + "reference": "85a90c0a4ab0d10c118d3cdf39115e00d9cca7d0", "shasum": "" }, "require": { @@ -14977,7 +14976,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v7.1.7" + "source": "https://github.com/symfony/validator/tree/v7.1.8" }, "funding": [ { @@ -14993,20 +14992,20 @@ "type": "tidelift" } ], - "time": "2024-11-04T11:34:07+00:00" + "time": "2024-11-08T15:46:42+00:00" }, { "name": "symfony/var-dumper", - "version": "v7.1.7", + "version": "v7.1.8", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "f6ea51f669760cacd7464bf7eaa0be87b8072db1" + "reference": "7bb01a47b1b00428d32b5e7b4d3b2d1aa58d3db8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/f6ea51f669760cacd7464bf7eaa0be87b8072db1", - "reference": "f6ea51f669760cacd7464bf7eaa0be87b8072db1", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7bb01a47b1b00428d32b5e7b4d3b2d1aa58d3db8", + "reference": "7bb01a47b1b00428d32b5e7b4d3b2d1aa58d3db8", "shasum": "" }, "require": { @@ -15060,7 +15059,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.1.7" + "source": "https://github.com/symfony/var-dumper/tree/v7.1.8" }, "funding": [ { @@ -15076,7 +15075,7 @@ "type": "tidelift" } ], - "time": "2024-11-05T15:34:55+00:00" + "time": "2024-11-08T15:46:42+00:00" }, { "name": "symfony/yaml", @@ -15775,16 +15774,16 @@ "packages-dev": [ { "name": "barryvdh/laravel-debugbar", - "version": "v3.14.6", + "version": "v3.14.7", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-debugbar.git", - "reference": "14e4517bd49130d6119228107eb21ae47ae120ab" + "reference": "f484b8c9124de0b163da39958331098ffcd4a65e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/14e4517bd49130d6119228107eb21ae47ae120ab", - "reference": "14e4517bd49130d6119228107eb21ae47ae120ab", + "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/f484b8c9124de0b163da39958331098ffcd4a65e", + "reference": "f484b8c9124de0b163da39958331098ffcd4a65e", "shasum": "" }, "require": { @@ -15843,7 +15842,7 @@ ], "support": { "issues": "https://github.com/barryvdh/laravel-debugbar/issues", - "source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.14.6" + "source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.14.7" }, "funding": [ { @@ -15855,7 +15854,7 @@ "type": "github" } ], - "time": "2024-10-18T13:15:12+00:00" + "time": "2024-11-14T09:12:35+00:00" }, { "name": "barryvdh/laravel-ide-helper", @@ -16235,16 +16234,16 @@ }, { "name": "composer/pcre", - "version": "3.3.1", + "version": "3.3.2", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "63aaeac21d7e775ff9bc9d45021e1745c97521c4" + "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/63aaeac21d7e775ff9bc9d45021e1745c97521c4", - "reference": "63aaeac21d7e775ff9bc9d45021e1745c97521c4", + "url": "https://api.github.com/repos/composer/pcre/zipball/b2bed4734f0cc156ee1fe9c0da2550420d99a21e", + "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e", "shasum": "" }, "require": { @@ -16254,8 +16253,8 @@ "phpstan/phpstan": "<1.11.10" }, "require-dev": { - "phpstan/phpstan": "^1.11.10", - "phpstan/phpstan-strict-rules": "^1.1", + "phpstan/phpstan": "^1.12 || ^2", + "phpstan/phpstan-strict-rules": "^1 || ^2", "phpunit/phpunit": "^8 || ^9" }, "type": "library", @@ -16294,7 +16293,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.3.1" + "source": "https://github.com/composer/pcre/tree/3.3.2" }, "funding": [ { @@ -16310,7 +16309,7 @@ "type": "tidelift" } ], - "time": "2024-08-27T18:44:43+00:00" + "time": "2024-11-12T16:29:46+00:00" }, { "name": "composer/semver", @@ -16853,16 +16852,16 @@ }, { "name": "larastan/larastan", - "version": "v2.9.10", + "version": "v2.9.11", "source": { "type": "git", "url": "https://github.com/larastan/larastan.git", - "reference": "9e7233d88f4f10796fadb8a2d85c5f2b55277c76" + "reference": "54eccd35d1732b9ee4392c25aec606a6a9c521e7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/larastan/larastan/zipball/9e7233d88f4f10796fadb8a2d85c5f2b55277c76", - "reference": "9e7233d88f4f10796fadb8a2d85c5f2b55277c76", + "url": "https://api.github.com/repos/larastan/larastan/zipball/54eccd35d1732b9ee4392c25aec606a6a9c521e7", + "reference": "54eccd35d1732b9ee4392c25aec606a6a9c521e7", "shasum": "" }, "require": { @@ -16880,9 +16879,11 @@ }, "require-dev": { "doctrine/coding-standard": "^12.0", + "laravel/framework": "^9.52.16 || ^10.28.0 || ^11.16", + "mockery/mockery": "^1.5.1", "nikic/php-parser": "^4.19.1", "orchestra/canvas": "^7.11.1 || ^8.11.0 || ^9.0.2", - "orchestra/testbench": "^7.33.0 || ^8.13.0 || ^9.0.3", + "orchestra/testbench-core": "^7.33.0 || ^8.13.0 || ^9.0.9", "phpstan/phpstan-deprecation-rules": "^1.2", "phpunit/phpunit": "^9.6.13 || ^10.5.16" }, @@ -16932,7 +16933,7 @@ ], "support": { "issues": "https://github.com/larastan/larastan/issues", - "source": "https://github.com/larastan/larastan/tree/v2.9.10" + "source": "https://github.com/larastan/larastan/tree/v2.9.11" }, "funding": [ { @@ -16952,7 +16953,7 @@ "type": "patreon" } ], - "time": "2024-10-19T23:04:40+00:00" + "time": "2024-11-11T23:11:00+00:00" }, { "name": "maximebf/debugbar", @@ -17322,16 +17323,16 @@ }, { "name": "phpmyadmin/sql-parser", - "version": "5.10.0", + "version": "5.10.1", "source": { "type": "git", "url": "https://github.com/phpmyadmin/sql-parser.git", - "reference": "91d980ab76c3f152481e367f62b921adc38af451" + "reference": "b14fd66496a22d8dd7f7e2791edd9e8674422f17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpmyadmin/sql-parser/zipball/91d980ab76c3f152481e367f62b921adc38af451", - "reference": "91d980ab76c3f152481e367f62b921adc38af451", + "url": "https://api.github.com/repos/phpmyadmin/sql-parser/zipball/b14fd66496a22d8dd7f7e2791edd9e8674422f17", + "reference": "b14fd66496a22d8dd7f7e2791edd9e8674422f17", "shasum": "" }, "require": { @@ -17405,20 +17406,20 @@ "type": "other" } ], - "time": "2024-08-29T20:56:34+00:00" + "time": "2024-11-10T04:10:31+00:00" }, { "name": "phpstan/phpstan", - "version": "1.12.8", + "version": "1.12.10", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "f6a60a4d66142b8156c9da923f1972657bc4748c" + "reference": "fc463b5d0fe906dcf19689be692c65c50406a071" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/f6a60a4d66142b8156c9da923f1972657bc4748c", - "reference": "f6a60a4d66142b8156c9da923f1972657bc4748c", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/fc463b5d0fe906dcf19689be692c65c50406a071", + "reference": "fc463b5d0fe906dcf19689be692c65c50406a071", "shasum": "" }, "require": { @@ -17463,7 +17464,7 @@ "type": "github" } ], - "time": "2024-11-06T19:06:49+00:00" + "time": "2024-11-11T15:37:09+00:00" }, { "name": "phpunit/php-code-coverage", diff --git a/config/ninja.php b/config/ninja.php index e0a410f0ff..29f36c3ffb 100644 --- a/config/ninja.php +++ b/config/ninja.php @@ -17,8 +17,8 @@ return [ 'require_https' => env('REQUIRE_HTTPS', true), 'app_url' => rtrim(env('APP_URL', ''), '/'), 'app_domain' => env('APP_DOMAIN', 'invoicing.co'), - 'app_version' => env('APP_VERSION', '5.10.51'), - 'app_tag' => env('APP_TAG', '5.10.51'), + 'app_version' => env('APP_VERSION', '5.10.52'), + 'app_tag' => env('APP_TAG', '5.10.52'), 'minimum_client_version' => '5.0.16', 'terms_version' => '1.0.1', 'api_secret' => env('API_SECRET', false),