From f40ccaed961fed13b8107148c8808fe6d26b9d86 Mon Sep 17 00:00:00 2001
From: David Bomba
Date: Wed, 19 Jul 2023 09:19:26 +1000
Subject: [PATCH 01/10] Add calculated start date to transformer
---
app/Transformers/TaskTransformer.php | 1 +
1 file changed, 1 insertion(+)
diff --git a/app/Transformers/TaskTransformer.php b/app/Transformers/TaskTransformer.php
index d2080b6a4500..60949c0b1609 100644
--- a/app/Transformers/TaskTransformer.php
+++ b/app/Transformers/TaskTransformer.php
@@ -130,6 +130,7 @@ class TaskTransformer extends EntityTransformer
'status_sort_order' => (int) $task->status_sort_order, //deprecated 5.0.34
'is_date_based' => (bool) $task->is_date_based,
'status_order' => is_null($task->status_order) ? null : (int) $task->status_order,
+ 'calculated_start_date' => $task->calculated_start_date ?: '',
];
}
}
From 204e6bd8527bc6f71af5127a40acfd00ebe3cbc6 Mon Sep 17 00:00:00 2001
From: David Bomba
Date: Wed, 19 Jul 2023 19:25:01 +1000
Subject: [PATCH 02/10] Minor fixes
---
app/Http/Livewire/PdfSlot.php | 9 ++++-----
app/Transformers/TaskTransformer.php | 2 +-
.../portal/ninja2020/components/html-viewer.blade.php | 7 ++++++-
3 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/app/Http/Livewire/PdfSlot.php b/app/Http/Livewire/PdfSlot.php
index c0f29b517a00..dc4372f12340 100644
--- a/app/Http/Livewire/PdfSlot.php
+++ b/app/Http/Livewire/PdfSlot.php
@@ -20,12 +20,8 @@ use Illuminate\Support\Str;
use App\Models\QuoteInvitation;
use App\Utils\VendorHtmlEngine;
use App\Models\CreditInvitation;
-use App\Services\Pdf\PdfBuilder;
-use App\Services\Pdf\PdfService;
use App\Models\InvoiceInvitation;
-use App\Services\Pdf\PdfDesigner;
use Illuminate\Support\Facades\Cache;
-use App\Services\Pdf\PdfConfiguration;
use App\Models\PurchaseOrderInvitation;
use App\Models\RecurringInvoiceInvitation;
use App\Jobs\Vendor\CreatePurchaseOrderPdf;
@@ -52,6 +48,8 @@ class PdfSlot extends Component
public $show_quantity = true;
+ public $show_line_total = true;
+
public $route_entity = 'client';
public function mount()
@@ -104,11 +102,12 @@ class PdfSlot extends Component
$this->settings = $this->entity->client ? $this->entity->client->getMergedSettings() : $this->entity->company->settings;
$this->show_cost = in_array('$product.unit_cost', $this->settings->pdf_variables->product_columns);
- $this->show_quantity = in_array('$product.quantity', $this->settings->pdf_variables->product_columns);
+ $this->show_line_total = in_array('$product.line_total', $this->settings->pdf_variables->product_columns);
if($this->entity_type == 'quote' && !$this->settings->sync_invoice_quote_columns ){
$this->show_cost = in_array('$product.unit_cost', $this->settings->pdf_variables->product_quote_columns);
$this->show_quantity = in_array('$product.quantity', $this->settings->pdf_variables->product_quote_columns);
+ $this->show_line_total = in_array('$product.line_total', $this->settings->pdf_variables->product_quote_columns);
}
$this->html_variables = $this->entity->client ?
diff --git a/app/Transformers/TaskTransformer.php b/app/Transformers/TaskTransformer.php
index 60949c0b1609..503ec0612799 100644
--- a/app/Transformers/TaskTransformer.php
+++ b/app/Transformers/TaskTransformer.php
@@ -130,7 +130,7 @@ class TaskTransformer extends EntityTransformer
'status_sort_order' => (int) $task->status_sort_order, //deprecated 5.0.34
'is_date_based' => (bool) $task->is_date_based,
'status_order' => is_null($task->status_order) ? null : (int) $task->status_order,
- 'calculated_start_date' => $task->calculated_start_date ?: '',
+ 'date' => $task->calculated_start_date ?: '',
];
}
}
diff --git a/resources/views/portal/ninja2020/components/html-viewer.blade.php b/resources/views/portal/ninja2020/components/html-viewer.blade.php
index e471ed24fa57..d630d3240959 100644
--- a/resources/views/portal/ninja2020/components/html-viewer.blade.php
+++ b/resources/views/portal/ninja2020/components/html-viewer.blade.php
@@ -90,7 +90,12 @@ span {
- {{ $product['line_total'] }} |
+
+
+ @if($show_line_total)
+ {{ $product['line_total'] }}
+ @endif
+ |
@endforeach
From 6139c7b0eed0a17b8c76b69609e7aef96aaa4c0c Mon Sep 17 00:00:00 2001
From: David Bomba
Date: Wed, 19 Jul 2023 19:59:11 +1000
Subject: [PATCH 03/10] Fixes for backup paths
---
.../ProtectedDownloadController.php | 1 +
app/Jobs/Company/CompanyExport.php | 18 ++++++++++--------
2 files changed, 11 insertions(+), 8 deletions(-)
diff --git a/app/Http/Controllers/ProtectedDownloadController.php b/app/Http/Controllers/ProtectedDownloadController.php
index c333539b99ab..b8f598a11021 100644
--- a/app/Http/Controllers/ProtectedDownloadController.php
+++ b/app/Http/Controllers/ProtectedDownloadController.php
@@ -11,6 +11,7 @@
namespace App\Http\Controllers;
+use App\Utils\Ninja;
use Illuminate\Http\Request;
use App\Jobs\Util\UnlinkFile;
use App\Exceptions\SystemError;
diff --git a/app/Jobs/Company/CompanyExport.php b/app/Jobs/Company/CompanyExport.php
index 2b693dbabb12..2b89028e8a1c 100644
--- a/app/Jobs/Company/CompanyExport.php
+++ b/app/Jobs/Company/CompanyExport.php
@@ -441,15 +441,15 @@ class CompanyExport implements ShouldQueue
$path = 'backups';
- Storage::makeDirectory(public_path('storage/backups/'));
+ Storage::makeDirectory(storage_path('backups/'));
try {
- mkdir(public_path('storage/backups/'));
+ mkdir(storage_path('backups/'));
} catch(\Exception $e) {
nlog("could not create directory");
}
- $zip_path = public_path('storage/backups/'.$file_name);
+ $zip_path = storage_path('backups/'.$file_name);
$zip = new \ZipArchive();
if ($zip->open($zip_path, \ZipArchive::CREATE)!==true) {
@@ -459,14 +459,16 @@ class CompanyExport implements ShouldQueue
$zip->addFromString("backup.json", json_encode($this->export_data));
$zip->close();
- if (Ninja::isHosted()) {
- Storage::disk(config('filesystems.default'))->put('backups/'.$file_name, file_get_contents($zip_path));
- }
+ Storage::disk(config('filesystems.default'))->put('backups/'.$file_name, file_get_contents($zip_path));
+ unlink($zip_path);
- $storage_file_path = Storage::disk(config('filesystems.default'))->url('backups/'.$file_name);
- $storage_path = Storage::disk(config('filesystems.default'))->path('backups/'.$file_name);
+ if(Ninja::isSelfHost())
+ $storage_path = 'backups/'.$file_name;
+ else
+ $storage_path = Storage::disk(config('filesystems.default'))->path('backups/'.$file_name);
$url = Cache::get($this->hash);
+
Cache::put($this->hash, $storage_path, now()->addHour());
App::forgetInstance('translator');
From b8c4d6668f4cade3a90a2b86ac9cd9df477a863d Mon Sep 17 00:00:00 2001
From: David Bomba
Date: Thu, 20 Jul 2023 08:07:11 +1000
Subject: [PATCH 04/10] Change length of webhook urls
---
.../2023_07_18_214607_add_start_date_column_to_tasks.php | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/database/migrations/2023_07_18_214607_add_start_date_column_to_tasks.php b/database/migrations/2023_07_18_214607_add_start_date_column_to_tasks.php
index ad988bd747ef..74b4a86ae689 100644
--- a/database/migrations/2023_07_18_214607_add_start_date_column_to_tasks.php
+++ b/database/migrations/2023_07_18_214607_add_start_date_column_to_tasks.php
@@ -16,6 +16,10 @@ return new class extends Migration
Schema::table('tasks', function (Blueprint $table) {
$table->date('calculated_start_date')->nullable();
});
+
+ Schema::table('webhooks', function (Blueprint $table){
+ $table->text('target_url')->change();
+ });
}
/**
From 843d7c3bf4e1fc52b0d0a5c5e44906c5072dc879 Mon Sep 17 00:00:00 2001
From: David Bomba
Date: Thu, 20 Jul 2023 09:08:17 +1000
Subject: [PATCH 05/10] Adjustments for vendor imports
---
app/Import/Providers/BaseImport.php | 8 ++++++--
app/Repositories/VendorRepository.php | 12 ++++++++----
2 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/app/Import/Providers/BaseImport.php b/app/Import/Providers/BaseImport.php
index 0cb696bfde5c..5d6ef871dbd9 100644
--- a/app/Import/Providers/BaseImport.php
+++ b/app/Import/Providers/BaseImport.php
@@ -477,8 +477,12 @@ class BaseImport
}
nlog($invoice_data);
+ $saveable_invoice_data = $invoice_data;
+
+ if(array_key_exists('payments', $saveable_invoice_data))
+ unset($saveable_invoice_data['payments']);
- $invoice_repository->save($invoice_data, $invoice);
+ $invoice_repository->save($saveable_invoice_data, $invoice);
$count++;
// If we're doing a generic CSV import, only import payment data if we're not importing a payment CSV.
@@ -504,7 +508,7 @@ class BaseImport
];
/* Make sure we don't apply any payments to invoices with a Zero Amount*/
- if ($invoice->amount > 0) {
+ if ($invoice->amount > 0 && $payment_data['amount'] > 0) {
$payment = $payment_repository->save(
$payment_data,
diff --git a/app/Repositories/VendorRepository.php b/app/Repositories/VendorRepository.php
index bb9266014701..f1eeb0e25962 100644
--- a/app/Repositories/VendorRepository.php
+++ b/app/Repositories/VendorRepository.php
@@ -43,10 +43,14 @@ class VendorRepository extends BaseRepository
*/
public function save(array $data, Vendor $vendor) : ?Vendor
{
- $vendor->fill($data);
-
- nlog($data);
-
+ $saveable_vendor = $data;
+
+ if(array_key_exists('contacts', $data)) {
+ unset($saveable_vendor['contacts']);
+ }
+
+ $vendor->fill($saveable_vendor);
+
$vendor->saveQuietly();
if ($vendor->number == '' || ! $vendor->number) {
From 81d0059480e230881f37e18cc513b27c01ec4bd1 Mon Sep 17 00:00:00 2001
From: David Bomba
Date: Thu, 20 Jul 2023 09:57:46 +1000
Subject: [PATCH 06/10] Adjustments for self updater
---
app/Http/Controllers/SelfUpdateController.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/Http/Controllers/SelfUpdateController.php b/app/Http/Controllers/SelfUpdateController.php
index 33e47e671145..12fd890840a6 100644
--- a/app/Http/Controllers/SelfUpdateController.php
+++ b/app/Http/Controllers/SelfUpdateController.php
@@ -53,7 +53,7 @@ class SelfUpdateController extends BaseController
nlog('Test filesystem is writable');
- $this->testWritable();
+ // $this->testWritable();
nlog('Clear cache directory');
From a7d3424720102f3625423f9ccc9de1b475af3db8 Mon Sep 17 00:00:00 2001
From: David Bomba
Date: Thu, 20 Jul 2023 16:46:10 +1000
Subject: [PATCH 07/10] Ensure document file names are translated
---
app/Http/Controllers/ActivityController.php | 2 +
.../ClientPortal/InvitationController.php | 8 ++-
app/Http/Controllers/CreditController.php | 43 ++++++++-------
app/Http/Controllers/InvoiceController.php | 51 +++++++++---------
.../Controllers/PurchaseOrderController.php | 37 ++++++-------
app/Http/Controllers/QuoteController.php | 53 ++++++++++---------
.../RecurringInvoiceController.php | 31 +++++------
.../VendorPortal/InvitationController.php | 19 ++++---
app/Http/Middleware/SetInviteDb.php | 1 -
app/Models/Company.php | 6 +++
.../PurchaseOrder/GetPurchaseOrderPdf.php | 3 +-
11 files changed, 137 insertions(+), 117 deletions(-)
diff --git a/app/Http/Controllers/ActivityController.php b/app/Http/Controllers/ActivityController.php
index b201296e0db4..7f4a7bd7fc8b 100644
--- a/app/Http/Controllers/ActivityController.php
+++ b/app/Http/Controllers/ActivityController.php
@@ -148,6 +148,8 @@ class ActivityController extends BaseController
}
}
+ $activity->company->setLocale();
+
if (isset($activity->invoice_id)) {
$filename = $activity->invoice->numberFormatter().'.pdf';
} elseif (isset($activity->quote_id)) {
diff --git a/app/Http/Controllers/ClientPortal/InvitationController.php b/app/Http/Controllers/ClientPortal/InvitationController.php
index a1d4949f0175..2c606c141573 100644
--- a/app/Http/Controllers/ClientPortal/InvitationController.php
+++ b/app/Http/Controllers/ClientPortal/InvitationController.php
@@ -85,23 +85,21 @@ class InvitationController extends Controller
->with('contact.client')
->firstOrFail();
- //09-03-2023 do not show entity if the invitation has been trashed.
if ($invitation->trashed() || $invitation->{$entity}->is_deleted) {
return $this->render('generic.not_available', ['account' => $invitation->company->account, 'company' => $invitation->company]);
}
- /* 12/01/2022 Clean up an edge case where if the contact is trashed, restore if a invitation comes back. */
if ($invitation->contact->trashed()) {
$invitation->contact->restore();
}
- /* Return early if we have the correct client_hash embedded */
$client_contact = $invitation->contact;
if (empty($client_contact->email)) {
$client_contact->email = Str::random(15) . "@example.com";
- } $client_contact->save();
-
+ $client_contact->save();
+ }
+
if (request()->has('client_hash') && request()->input('client_hash') == $invitation->contact->client->client_hash) {
request()->session()->invalidate();
auth()->guard('contact')->loginUsingId($client_contact->id, true);
diff --git a/app/Http/Controllers/CreditController.php b/app/Http/Controllers/CreditController.php
index 336706ea3668..bff1ac302f19 100644
--- a/app/Http/Controllers/CreditController.php
+++ b/app/Http/Controllers/CreditController.php
@@ -11,34 +11,35 @@
namespace App\Http\Controllers;
-use App\Events\Credit\CreditWasCreated;
-use App\Events\Credit\CreditWasUpdated;
-use App\Factory\CloneCreditFactory;
+use App\Utils\Ninja;
+use App\Models\Client;
+use App\Models\Credit;
+use App\Models\Account;
+use App\Models\Invoice;
+use Illuminate\Http\Response;
use App\Factory\CreditFactory;
use App\Filters\CreditFilters;
-use App\Http\Requests\Credit\ActionCreditRequest;
+use App\Jobs\Credit\ZipCredits;
+use App\Utils\Traits\MakesHash;
+use App\Jobs\Entity\EmailEntity;
+use App\Factory\CloneCreditFactory;
+use App\Services\PdfMaker\PdfMerge;
+use Illuminate\Support\Facades\App;
+use App\Utils\Traits\SavesDocuments;
+use App\Repositories\CreditRepository;
+use App\Events\Credit\CreditWasCreated;
+use App\Events\Credit\CreditWasUpdated;
+use App\Transformers\CreditTransformer;
+use Illuminate\Support\Facades\Storage;
use App\Http\Requests\Credit\BulkCreditRequest;
-use App\Http\Requests\Credit\CreateCreditRequest;
-use App\Http\Requests\Credit\DestroyCreditRequest;
use App\Http\Requests\Credit\EditCreditRequest;
use App\Http\Requests\Credit\ShowCreditRequest;
use App\Http\Requests\Credit\StoreCreditRequest;
+use App\Http\Requests\Credit\ActionCreditRequest;
+use App\Http\Requests\Credit\CreateCreditRequest;
use App\Http\Requests\Credit\UpdateCreditRequest;
use App\Http\Requests\Credit\UploadCreditRequest;
-use App\Jobs\Credit\ZipCredits;
-use App\Jobs\Entity\EmailEntity;
-use App\Models\Account;
-use App\Models\Client;
-use App\Models\Credit;
-use App\Models\Invoice;
-use App\Repositories\CreditRepository;
-use App\Services\PdfMaker\PdfMerge;
-use App\Transformers\CreditTransformer;
-use App\Utils\Ninja;
-use App\Utils\Traits\MakesHash;
-use App\Utils\Traits\SavesDocuments;
-use Illuminate\Http\Response;
-use Illuminate\Support\Facades\Storage;
+use App\Http\Requests\Credit\DestroyCreditRequest;
/**
* Class CreditController.
@@ -691,6 +692,8 @@ class CreditController extends BaseController
$credit = $invitation->credit;
+ App::setLocale($invitation->contact->preferredLocale());
+
$file = $credit->service()->getCreditPdf($invitation);
$headers = ['Content-Type' => 'application/pdf'];
diff --git a/app/Http/Controllers/InvoiceController.php b/app/Http/Controllers/InvoiceController.php
index 1c691f36f577..81556fc531af 100644
--- a/app/Http/Controllers/InvoiceController.php
+++ b/app/Http/Controllers/InvoiceController.php
@@ -12,38 +12,39 @@
namespace App\Http\Controllers;
-use App\Events\Invoice\InvoiceWasCreated;
-use App\Events\Invoice\InvoiceWasUpdated;
-use App\Factory\CloneInvoiceFactory;
-use App\Factory\CloneInvoiceToQuoteFactory;
+use App\Utils\Ninja;
+use App\Models\Quote;
+use App\Models\Account;
+use App\Models\Invoice;
+use App\Jobs\Cron\AutoBill;
+use Illuminate\Http\Response;
use App\Factory\InvoiceFactory;
use App\Filters\InvoiceFilters;
-use App\Http\Requests\Invoice\ActionInvoiceRequest;
+use App\Utils\Traits\MakesHash;
+use App\Jobs\Invoice\ZipInvoices;
+use App\Services\PdfMaker\PdfMerge;
+use Illuminate\Support\Facades\App;
+use App\Factory\CloneInvoiceFactory;
+use App\Jobs\Invoice\BulkInvoiceJob;
+use App\Utils\Traits\SavesDocuments;
+use App\Jobs\Invoice\UpdateReminders;
+use App\Transformers\QuoteTransformer;
+use App\Repositories\InvoiceRepository;
+use Illuminate\Support\Facades\Storage;
+use App\Transformers\InvoiceTransformer;
+use App\Events\Invoice\InvoiceWasCreated;
+use App\Events\Invoice\InvoiceWasUpdated;
+use App\Factory\CloneInvoiceToQuoteFactory;
use App\Http\Requests\Invoice\BulkInvoiceRequest;
-use App\Http\Requests\Invoice\CreateInvoiceRequest;
-use App\Http\Requests\Invoice\DestroyInvoiceRequest;
use App\Http\Requests\Invoice\EditInvoiceRequest;
use App\Http\Requests\Invoice\ShowInvoiceRequest;
use App\Http\Requests\Invoice\StoreInvoiceRequest;
+use App\Http\Requests\Invoice\ActionInvoiceRequest;
+use App\Http\Requests\Invoice\CreateInvoiceRequest;
use App\Http\Requests\Invoice\UpdateInvoiceRequest;
-use App\Http\Requests\Invoice\UpdateReminderRequest;
use App\Http\Requests\Invoice\UploadInvoiceRequest;
-use App\Jobs\Cron\AutoBill;
-use App\Jobs\Invoice\BulkInvoiceJob;
-use App\Jobs\Invoice\UpdateReminders;
-use App\Jobs\Invoice\ZipInvoices;
-use App\Models\Account;
-use App\Models\Invoice;
-use App\Models\Quote;
-use App\Repositories\InvoiceRepository;
-use App\Services\PdfMaker\PdfMerge;
-use App\Transformers\InvoiceTransformer;
-use App\Transformers\QuoteTransformer;
-use App\Utils\Ninja;
-use App\Utils\Traits\MakesHash;
-use App\Utils\Traits\SavesDocuments;
-use Illuminate\Http\Response;
-use Illuminate\Support\Facades\Storage;
+use App\Http\Requests\Invoice\DestroyInvoiceRequest;
+use App\Http\Requests\Invoice\UpdateReminderRequest;
/**
* Class InvoiceController.
@@ -821,6 +822,8 @@ class InvoiceController extends BaseController
$invoice = $invitation->invoice;
+ App::setLocale($invitation->contact->preferredLocale());
+
$file_name = $invoice->numberFormatter().'.pdf';
$file = (new \App\Jobs\Entity\CreateRawPdf($invitation, $invitation->company->db))->handle();
diff --git a/app/Http/Controllers/PurchaseOrderController.php b/app/Http/Controllers/PurchaseOrderController.php
index 91da9c5efd7d..c6892f89a69d 100644
--- a/app/Http/Controllers/PurchaseOrderController.php
+++ b/app/Http/Controllers/PurchaseOrderController.php
@@ -11,32 +11,33 @@
namespace App\Http\Controllers;
-use App\Events\PurchaseOrder\PurchaseOrderWasCreated;
-use App\Events\PurchaseOrder\PurchaseOrderWasUpdated;
+use App\Utils\Ninja;
+use App\Models\Client;
+use App\Models\Account;
+use App\Models\PurchaseOrder;
+use Illuminate\Http\Response;
+use App\Utils\Traits\MakesHash;
+use App\Services\PdfMaker\PdfMerge;
+use Illuminate\Support\Facades\App;
+use App\Utils\Traits\SavesDocuments;
use App\Factory\PurchaseOrderFactory;
use App\Filters\PurchaseOrderFilters;
-use App\Http\Requests\PurchaseOrder\ActionPurchaseOrderRequest;
+use Illuminate\Support\Facades\Storage;
+use App\Jobs\PurchaseOrder\ZipPurchaseOrders;
+use App\Repositories\PurchaseOrderRepository;
+use App\Jobs\PurchaseOrder\PurchaseOrderEmail;
+use App\Transformers\PurchaseOrderTransformer;
+use App\Events\PurchaseOrder\PurchaseOrderWasCreated;
+use App\Events\PurchaseOrder\PurchaseOrderWasUpdated;
use App\Http\Requests\PurchaseOrder\BulkPurchaseOrderRequest;
-use App\Http\Requests\PurchaseOrder\CreatePurchaseOrderRequest;
-use App\Http\Requests\PurchaseOrder\DestroyPurchaseOrderRequest;
use App\Http\Requests\PurchaseOrder\EditPurchaseOrderRequest;
use App\Http\Requests\PurchaseOrder\ShowPurchaseOrderRequest;
use App\Http\Requests\PurchaseOrder\StorePurchaseOrderRequest;
+use App\Http\Requests\PurchaseOrder\ActionPurchaseOrderRequest;
+use App\Http\Requests\PurchaseOrder\CreatePurchaseOrderRequest;
use App\Http\Requests\PurchaseOrder\UpdatePurchaseOrderRequest;
use App\Http\Requests\PurchaseOrder\UploadPurchaseOrderRequest;
-use App\Jobs\PurchaseOrder\PurchaseOrderEmail;
-use App\Jobs\PurchaseOrder\ZipPurchaseOrders;
-use App\Models\Account;
-use App\Models\Client;
-use App\Models\PurchaseOrder;
-use App\Repositories\PurchaseOrderRepository;
-use App\Services\PdfMaker\PdfMerge;
-use App\Transformers\PurchaseOrderTransformer;
-use App\Utils\Ninja;
-use App\Utils\Traits\MakesHash;
-use App\Utils\Traits\SavesDocuments;
-use Illuminate\Http\Response;
-use Illuminate\Support\Facades\Storage;
+use App\Http\Requests\PurchaseOrder\DestroyPurchaseOrderRequest;
class PurchaseOrderController extends BaseController
{
diff --git a/app/Http/Controllers/QuoteController.php b/app/Http/Controllers/QuoteController.php
index ca27b5840054..bfee11be5a57 100644
--- a/app/Http/Controllers/QuoteController.php
+++ b/app/Http/Controllers/QuoteController.php
@@ -11,38 +11,39 @@
namespace App\Http\Controllers;
-use App\Events\Quote\QuoteWasCreated;
-use App\Events\Quote\QuoteWasUpdated;
-use App\Factory\CloneQuoteFactory;
-use App\Factory\CloneQuoteToInvoiceFactory;
-use App\Factory\CloneQuoteToProjectFactory;
+use App\Utils\Ninja;
+use App\Models\Quote;
+use App\Models\Client;
+use App\Models\Account;
+use App\Models\Invoice;
+use Illuminate\Http\Request;
use App\Factory\QuoteFactory;
use App\Filters\QuoteFilters;
-use App\Http\Requests\Quote\ActionQuoteRequest;
-use App\Http\Requests\Quote\BulkActionQuoteRequest;
-use App\Http\Requests\Quote\CreateQuoteRequest;
-use App\Http\Requests\Quote\DestroyQuoteRequest;
+use App\Jobs\Quote\ZipQuotes;
+use Illuminate\Http\Response;
+use App\Utils\Traits\MakesHash;
+use App\Factory\CloneQuoteFactory;
+use App\Services\PdfMaker\PdfMerge;
+use Illuminate\Support\Facades\App;
+use App\Utils\Traits\SavesDocuments;
+use App\Events\Quote\QuoteWasCreated;
+use App\Events\Quote\QuoteWasUpdated;
+use App\Repositories\QuoteRepository;
+use App\Transformers\QuoteTransformer;
+use App\Utils\Traits\GeneratesCounter;
+use Illuminate\Support\Facades\Storage;
+use App\Transformers\InvoiceTransformer;
+use App\Factory\CloneQuoteToInvoiceFactory;
+use App\Factory\CloneQuoteToProjectFactory;
use App\Http\Requests\Quote\EditQuoteRequest;
use App\Http\Requests\Quote\ShowQuoteRequest;
use App\Http\Requests\Quote\StoreQuoteRequest;
+use App\Http\Requests\Quote\ActionQuoteRequest;
+use App\Http\Requests\Quote\CreateQuoteRequest;
use App\Http\Requests\Quote\UpdateQuoteRequest;
use App\Http\Requests\Quote\UploadQuoteRequest;
-use App\Jobs\Quote\ZipQuotes;
-use App\Models\Account;
-use App\Models\Client;
-use App\Models\Invoice;
-use App\Models\Quote;
-use App\Repositories\QuoteRepository;
-use App\Services\PdfMaker\PdfMerge;
-use App\Transformers\InvoiceTransformer;
-use App\Transformers\QuoteTransformer;
-use App\Utils\Ninja;
-use App\Utils\Traits\GeneratesCounter;
-use App\Utils\Traits\MakesHash;
-use App\Utils\Traits\SavesDocuments;
-use Illuminate\Http\Request;
-use Illuminate\Http\Response;
-use Illuminate\Support\Facades\Storage;
+use App\Http\Requests\Quote\DestroyQuoteRequest;
+use App\Http\Requests\Quote\BulkActionQuoteRequest;
/**
* Class QuoteController.
@@ -824,6 +825,8 @@ class QuoteController extends BaseController
$contact = $invitation->contact;
$quote = $invitation->quote;
+
+ App::setLocale($invitation->contact->preferredLocale());
$file = $quote->service()->getQuotePdf($contact);
diff --git a/app/Http/Controllers/RecurringInvoiceController.php b/app/Http/Controllers/RecurringInvoiceController.php
index 02b526d094c2..daa59552c836 100644
--- a/app/Http/Controllers/RecurringInvoiceController.php
+++ b/app/Http/Controllers/RecurringInvoiceController.php
@@ -11,29 +11,28 @@
namespace App\Http\Controllers;
-use App\Events\RecurringInvoice\RecurringInvoiceWasCreated;
-use App\Events\RecurringInvoice\RecurringInvoiceWasUpdated;
+use App\Utils\Ninja;
+use App\Models\Account;
+use Illuminate\Http\Response;
+use App\Utils\Traits\MakesHash;
+use App\Models\RecurringInvoice;
+use App\Utils\Traits\SavesDocuments;
use App\Factory\RecurringInvoiceFactory;
use App\Filters\RecurringInvoiceFilters;
-use App\Http\Requests\RecurringInvoice\ActionRecurringInvoiceRequest;
+use App\Jobs\RecurringInvoice\UpdateRecurring;
+use App\Repositories\RecurringInvoiceRepository;
+use App\Transformers\RecurringInvoiceTransformer;
+use App\Events\RecurringInvoice\RecurringInvoiceWasCreated;
+use App\Events\RecurringInvoice\RecurringInvoiceWasUpdated;
use App\Http\Requests\RecurringInvoice\BulkRecurringInvoiceRequest;
-use App\Http\Requests\RecurringInvoice\CreateRecurringInvoiceRequest;
-use App\Http\Requests\RecurringInvoice\DestroyRecurringInvoiceRequest;
use App\Http\Requests\RecurringInvoice\EditRecurringInvoiceRequest;
use App\Http\Requests\RecurringInvoice\ShowRecurringInvoiceRequest;
use App\Http\Requests\RecurringInvoice\StoreRecurringInvoiceRequest;
+use App\Http\Requests\RecurringInvoice\ActionRecurringInvoiceRequest;
+use App\Http\Requests\RecurringInvoice\CreateRecurringInvoiceRequest;
use App\Http\Requests\RecurringInvoice\UpdateRecurringInvoiceRequest;
use App\Http\Requests\RecurringInvoice\UploadRecurringInvoiceRequest;
-use App\Jobs\RecurringInvoice\UpdateRecurring;
-use App\Models\Account;
-use App\Models\RecurringInvoice;
-use App\Repositories\RecurringInvoiceRepository;
-use App\Transformers\RecurringInvoiceTransformer;
-use App\Utils\Ninja;
-use App\Utils\Traits\MakesHash;
-use App\Utils\Traits\SavesDocuments;
-use Illuminate\Http\Response;
-use Illuminate\Support\Facades\Storage;
+use App\Http\Requests\RecurringInvoice\DestroyRecurringInvoiceRequest;
/**
* Class RecurringInvoiceController.
@@ -566,6 +565,8 @@ class RecurringInvoiceController extends BaseController
}
$invoice = $invitation->recurring_invoice;
+
+ \Illuminate\Support\Facades\App::setLocale($invitation->contact->preferredLocale());
$file_name = $invoice->numberFormatter().'.pdf';
diff --git a/app/Http/Controllers/VendorPortal/InvitationController.php b/app/Http/Controllers/VendorPortal/InvitationController.php
index 80bc02e5d5df..7ce6ae394d01 100644
--- a/app/Http/Controllers/VendorPortal/InvitationController.php
+++ b/app/Http/Controllers/VendorPortal/InvitationController.php
@@ -11,16 +11,17 @@
namespace App\Http\Controllers\VendorPortal;
-use App\Events\Misc\InvitationWasViewed;
-use App\Events\PurchaseOrder\PurchaseOrderWasViewed;
-use App\Http\Controllers\Controller;
-use App\Jobs\Vendor\CreatePurchaseOrderPdf;
-use App\Models\PurchaseOrderInvitation;
use App\Utils\Ninja;
-use App\Utils\Traits\MakesDates;
-use App\Utils\Traits\MakesHash;
-use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Str;
+use App\Utils\Traits\MakesHash;
+use App\Utils\Traits\MakesDates;
+use Illuminate\Support\Facades\App;
+use App\Http\Controllers\Controller;
+use Illuminate\Support\Facades\Auth;
+use App\Models\PurchaseOrderInvitation;
+use App\Events\Misc\InvitationWasViewed;
+use App\Jobs\Vendor\CreatePurchaseOrderPdf;
+use App\Events\PurchaseOrder\PurchaseOrderWasViewed;
/**
* Class InvitationController.
@@ -89,6 +90,8 @@ class InvitationController extends Controller
return response()->json(["message" => "no record found"], 400);
}
+ App::setLocale($invitation->contact->preferredLocale());
+
$file_name = $invitation->purchase_order->numberFormatter().'.pdf';
$file = (new CreatePurchaseOrderPdf($invitation))->rawPdf();
diff --git a/app/Http/Middleware/SetInviteDb.php b/app/Http/Middleware/SetInviteDb.php
index 07dc7b4419d1..cc9ec3c1918b 100644
--- a/app/Http/Middleware/SetInviteDb.php
+++ b/app/Http/Middleware/SetInviteDb.php
@@ -53,7 +53,6 @@ class SetInviteDb
/* Try and determine the DB from the invitation key STRING*/
if (config('ninja.db.multi_db_enabled')) {
- // nlog("/ Try and determine the DB from the invitation key /");
$hashids = new Hashids(config('ninja.hash_salt'), 10);
$segments = explode('-', $request->route('invitation_key'));
diff --git a/app/Models/Company.php b/app/Models/Company.php
index ea94a0a6c1d1..cce115b25c9c 100644
--- a/app/Models/Company.php
+++ b/app/Models/Company.php
@@ -16,6 +16,7 @@ use App\Casts\EncryptedCast;
use App\Utils\Traits\AppSetup;
use App\Utils\Traits\MakesHash;
use App\DataMapper\CompanySettings;
+use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Cache;
use Laracasts\Presenter\PresentableTrait;
use App\Utils\Traits\CompanySettingsSaver;
@@ -686,6 +687,11 @@ class Company extends BaseModel
return $this->getLocale();
}
+ public function setLocale()
+ {
+ App::setLocale($this->getLocale());
+ }
+
public function getSetting($setting)
{
if (property_exists($this->settings, $setting) != false) {
diff --git a/app/Services/PurchaseOrder/GetPurchaseOrderPdf.php b/app/Services/PurchaseOrder/GetPurchaseOrderPdf.php
index 40044b90b6e5..5735b6eadeed 100644
--- a/app/Services/PurchaseOrder/GetPurchaseOrderPdf.php
+++ b/app/Services/PurchaseOrder/GetPurchaseOrderPdf.php
@@ -11,11 +11,11 @@
namespace App\Services\PurchaseOrder;
-use App\Jobs\Vendor\CreatePurchaseOrderPdf;
use App\Models\PurchaseOrder;
use App\Models\VendorContact;
use App\Services\AbstractService;
use Illuminate\Support\Facades\Storage;
+use App\Jobs\Vendor\CreatePurchaseOrderPdf;
class GetPurchaseOrderPdf extends AbstractService
{
@@ -31,6 +31,7 @@ class GetPurchaseOrderPdf extends AbstractService
$invitation = $this->purchase_order->invitations()->where('vendor_contact_id', $this->contact->id)->first();
+
if (! $invitation) {
$invitation = $this->purchase_order->invitations()->first();
}
From 1c9450a6e4eac9b90aacc70ec6ef1f010681e904 Mon Sep 17 00:00:00 2001
From: David Bomba
Date: Thu, 20 Jul 2023 21:17:01 +1000
Subject: [PATCH 08/10] Improve readability for html view in Client Portal
---
app/Http/Livewire/PdfSlot.php | 16 ++++++++++------
.../ninja2020/components/html-viewer.blade.php | 8 ++++----
2 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/app/Http/Livewire/PdfSlot.php b/app/Http/Livewire/PdfSlot.php
index dc4372f12340..dccaf802c03d 100644
--- a/app/Http/Livewire/PdfSlot.php
+++ b/app/Http/Livewire/PdfSlot.php
@@ -25,6 +25,7 @@ use Illuminate\Support\Facades\Cache;
use App\Models\PurchaseOrderInvitation;
use App\Models\RecurringInvoiceInvitation;
use App\Jobs\Vendor\CreatePurchaseOrderPdf;
+use App\Services\PdfMaker\Designs\Utilities\DesignHelpers;
class PdfSlot extends Component
{
@@ -172,20 +173,20 @@ class PdfSlot extends Component
if($this->entity_type == 'invoice' || $this->entity_type == 'recurring_invoice') {
foreach($this->settings->pdf_variables->invoice_details as $variable)
- $entity_details .= "{$variable}_label
{$variable}
";
+ $entity_details .= "{$variable}_label
{$variable}
";
}
elseif($this->entity_type == 'quote'){
foreach($this->settings->pdf_variables->quote_details as $variable)
- $entity_details .= "{$variable}_label
{$variable}
";
+ $entity_details .= "{$variable}_label
{$variable}
";
}
elseif($this->entity_type == 'credit') {
foreach($this->settings->pdf_variables->credit_details as $variable)
- $entity_details .= "{$variable}_label
{$variable}
";
+ $entity_details .= "{$variable}_label
{$variable}
";
}
elseif($this->entity_type == 'purchase_order'){
foreach($this->settings->pdf_variables->purchase_order_details as $variable)
- $entity_details .= "{$variable}_label
{$variable}
";
+ $entity_details .= "{$variable}_label
{$variable}
";
}
return $this->convertVariables($entity_details);
@@ -228,13 +229,16 @@ class PdfSlot extends Component
private function getProducts()
{
+
+
+
$product_items = collect($this->entity->line_items)->filter(function ($item) {
return $item->type_id == 1 || $item->type_id == 6 || $item->type_id == 5;
})->map(function ($item){
return [
'quantity' => $item->quantity,
'cost' => Number::formatMoney($item->cost, $this->entity->client ?: $this->entity->vendor),
- 'notes' => $item->notes,
+ 'notes' => $this->invitation->company->markdown_enabled ? DesignHelpers::parseMarkdownToHtml($item->notes) : $item->notes,
'line_total' => Number::formatMoney($item->line_total, $this->entity->client ?: $this->entity->vendor),
];
});
@@ -250,7 +254,7 @@ class PdfSlot extends Component
return [
'quantity' => $item->quantity,
'cost' => Number::formatMoney($item->cost, $this->entity->client ?: $this->entity->vendor),
- 'notes' => $item->notes,
+ 'notes' => $this->invitation->company->markdown_enabled ? DesignHelpers::parseMarkdownToHtml($item->notes) : $item->notes,
'line_total' => Number::formatMoney($item->line_total, $this->entity->client ?: $this->entity->vendor),
];
});
diff --git a/resources/views/portal/ninja2020/components/html-viewer.blade.php b/resources/views/portal/ninja2020/components/html-viewer.blade.php
index d630d3240959..0b1ccdafed00 100644
--- a/resources/views/portal/ninja2020/components/html-viewer.blade.php
+++ b/resources/views/portal/ninja2020/components/html-viewer.blade.php
@@ -86,7 +86,7 @@ span {
{{ $product['cost'] }}
@endif
- {{ $product['notes'] }}
+ {!! $product['notes'] !!}
@@ -106,19 +106,19 @@ span {
-
+
Service |
Amount |
@foreach($services as $service)
-
+
{{ $service['quantity'] }} × {{ $service['cost'] }}
- {{ $service['notes'] }}
+ {!! $service['notes'] !!}
|
From 61c033b224c1a22865c0d4bfd4bb5e60321c663c Mon Sep 17 00:00:00 2001
From: David Bomba
Date: Fri, 21 Jul 2023 09:01:23 +1000
Subject: [PATCH 09/10] Minor fixes
---
app/Http/Controllers/PreviewController.php | 2 +-
tests/Feature/ClientPortal/CreditsTest.php | 2 ++
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/app/Http/Controllers/PreviewController.php b/app/Http/Controllers/PreviewController.php
index a6d6760d7919..7402b886a4cf 100644
--- a/app/Http/Controllers/PreviewController.php
+++ b/app/Http/Controllers/PreviewController.php
@@ -285,7 +285,7 @@ class PreviewController extends BaseController
return $maker->getCompiledHTML();
}
} catch(\Exception $e) {
- nlog($e->getMessage());
+ // nlog($e->getMessage());
DB::connection(config('database.default'))->rollBack();
return;
diff --git a/tests/Feature/ClientPortal/CreditsTest.php b/tests/Feature/ClientPortal/CreditsTest.php
index a579a9fd1bf1..e555dcf8f0d6 100644
--- a/tests/Feature/ClientPortal/CreditsTest.php
+++ b/tests/Feature/ClientPortal/CreditsTest.php
@@ -33,6 +33,8 @@ class CreditsTest extends TestCase
use DatabaseTransactions;
use AppSetup;
+ private $faker;
+
protected function setUp(): void
{
parent::setUp();
From c91f647df3b0a4268e8a93d12e7352c55511a130 Mon Sep 17 00:00:00 2001
From: David Bomba
Date: Fri, 21 Jul 2023 13:19:51 +1000
Subject: [PATCH 10/10] minor update for lock file
---
composer.lock | 146 ++++++++++++++++++++++++++------------------------
1 file changed, 77 insertions(+), 69 deletions(-)
diff --git a/composer.lock b/composer.lock
index 294a1edc5334..4afddc900c60 100644
--- a/composer.lock
+++ b/composer.lock
@@ -424,16 +424,16 @@
},
{
"name": "aws/aws-sdk-php",
- "version": "3.275.7",
+ "version": "3.276.2",
"source": {
"type": "git",
"url": "https://github.com/aws/aws-sdk-php.git",
- "reference": "54dcef3349c81b46c0f5f6e54b5f9bfb5db19903"
+ "reference": "78c9510280512121e8fdaa9538b744778ab48bf9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/54dcef3349c81b46c0f5f6e54b5f9bfb5db19903",
- "reference": "54dcef3349c81b46c0f5f6e54b5f9bfb5db19903",
+ "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/78c9510280512121e8fdaa9538b744778ab48bf9",
+ "reference": "78c9510280512121e8fdaa9538b744778ab48bf9",
"shasum": ""
},
"require": {
@@ -513,9 +513,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.275.7"
+ "source": "https://github.com/aws/aws-sdk-php/tree/3.276.2"
},
- "time": "2023-07-13T18:21:04+00:00"
+ "time": "2023-07-20T18:16:37+00:00"
},
{
"name": "bacon/bacon-qr-code",
@@ -2167,16 +2167,16 @@
},
{
"name": "firebase/php-jwt",
- "version": "v6.8.0",
+ "version": "v6.8.1",
"source": {
"type": "git",
"url": "https://github.com/firebase/php-jwt.git",
- "reference": "48b0210c51718d682e53210c24d25c5a10a2299b"
+ "reference": "5dbc8959427416b8ee09a100d7a8588c00fb2e26"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/firebase/php-jwt/zipball/48b0210c51718d682e53210c24d25c5a10a2299b",
- "reference": "48b0210c51718d682e53210c24d25c5a10a2299b",
+ "url": "https://api.github.com/repos/firebase/php-jwt/zipball/5dbc8959427416b8ee09a100d7a8588c00fb2e26",
+ "reference": "5dbc8959427416b8ee09a100d7a8588c00fb2e26",
"shasum": ""
},
"require": {
@@ -2224,9 +2224,9 @@
],
"support": {
"issues": "https://github.com/firebase/php-jwt/issues",
- "source": "https://github.com/firebase/php-jwt/tree/v6.8.0"
+ "source": "https://github.com/firebase/php-jwt/tree/v6.8.1"
},
- "time": "2023-06-20T16:45:35+00:00"
+ "time": "2023-07-14T18:33:00+00:00"
},
{
"name": "fruitcake/php-cors",
@@ -2485,16 +2485,16 @@
},
{
"name": "google/apiclient-services",
- "version": "v0.308.0",
+ "version": "v0.309.0",
"source": {
"type": "git",
"url": "https://github.com/googleapis/google-api-php-client-services.git",
- "reference": "85cf00383e6bf6eca131bd3261b7859ea418a578"
+ "reference": "562f8e5ddbca68d52afc3bf47d03839e78722026"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/85cf00383e6bf6eca131bd3261b7859ea418a578",
- "reference": "85cf00383e6bf6eca131bd3261b7859ea418a578",
+ "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/562f8e5ddbca68d52afc3bf47d03839e78722026",
+ "reference": "562f8e5ddbca68d52afc3bf47d03839e78722026",
"shasum": ""
},
"require": {
@@ -2523,9 +2523,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.308.0"
+ "source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.309.0"
},
- "time": "2023-07-09T01:06:13+00:00"
+ "time": "2023-07-16T01:08:14+00:00"
},
{
"name": "google/auth",
@@ -4554,16 +4554,16 @@
},
{
"name": "laravel/socialite",
- "version": "v5.7.0",
+ "version": "v5.8.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/socialite.git",
- "reference": "f5996f499e14db15407201a6bfbaba3ce6ce736c"
+ "reference": "50148edf24b6cd3e428aa9bc06a5d915b24376bb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/socialite/zipball/f5996f499e14db15407201a6bfbaba3ce6ce736c",
- "reference": "f5996f499e14db15407201a6bfbaba3ce6ce736c",
+ "url": "https://api.github.com/repos/laravel/socialite/zipball/50148edf24b6cd3e428aa9bc06a5d915b24376bb",
+ "reference": "50148edf24b6cd3e428aa9bc06a5d915b24376bb",
"shasum": ""
},
"require": {
@@ -4620,7 +4620,7 @@
"issues": "https://github.com/laravel/socialite/issues",
"source": "https://github.com/laravel/socialite"
},
- "time": "2023-07-08T20:51:43+00:00"
+ "time": "2023-07-14T14:22:58+00:00"
},
{
"name": "laravel/tinker",
@@ -5716,16 +5716,16 @@
},
{
"name": "microsoft/microsoft-graph",
- "version": "1.102.0",
+ "version": "1.103.0",
"source": {
"type": "git",
"url": "https://github.com/microsoftgraph/msgraph-sdk-php.git",
- "reference": "4b450b06ac9df3868bbdbddb31bfcc4595f643bc"
+ "reference": "6e325c22145dbed4e51970ffecca4d7648c3c27e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/microsoftgraph/msgraph-sdk-php/zipball/4b450b06ac9df3868bbdbddb31bfcc4595f643bc",
- "reference": "4b450b06ac9df3868bbdbddb31bfcc4595f643bc",
+ "url": "https://api.github.com/repos/microsoftgraph/msgraph-sdk-php/zipball/6e325c22145dbed4e51970ffecca4d7648c3c27e",
+ "reference": "6e325c22145dbed4e51970ffecca4d7648c3c27e",
"shasum": ""
},
"require": {
@@ -5762,22 +5762,22 @@
"homepage": "https://developer.microsoft.com/en-us/graph",
"support": {
"issues": "https://github.com/microsoftgraph/msgraph-sdk-php/issues",
- "source": "https://github.com/microsoftgraph/msgraph-sdk-php/tree/1.102.0"
+ "source": "https://github.com/microsoftgraph/msgraph-sdk-php/tree/1.103.0"
},
- "time": "2023-07-05T13:07:19+00:00"
+ "time": "2023-07-19T03:27:15+00:00"
},
{
"name": "mollie/mollie-api-php",
- "version": "v2.58.0",
+ "version": "v2.59.0",
"source": {
"type": "git",
"url": "https://github.com/mollie/mollie-api-php.git",
- "reference": "5120e5b3e4622a290b64acf87266ea47d10d7301"
+ "reference": "9834e5779c695d1cc278b2c78ee514de9434b084"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/mollie/mollie-api-php/zipball/5120e5b3e4622a290b64acf87266ea47d10d7301",
- "reference": "5120e5b3e4622a290b64acf87266ea47d10d7301",
+ "url": "https://api.github.com/repos/mollie/mollie-api-php/zipball/9834e5779c695d1cc278b2c78ee514de9434b084",
+ "reference": "9834e5779c695d1cc278b2c78ee514de9434b084",
"shasum": ""
},
"require": {
@@ -5854,9 +5854,9 @@
],
"support": {
"issues": "https://github.com/mollie/mollie-api-php/issues",
- "source": "https://github.com/mollie/mollie-api-php/tree/v2.58.0"
+ "source": "https://github.com/mollie/mollie-api-php/tree/v2.59.0"
},
- "time": "2023-07-11T12:01:27+00:00"
+ "time": "2023-07-18T13:41:40+00:00"
},
{
"name": "moneyphp/money",
@@ -8514,16 +8514,16 @@
},
{
"name": "psy/psysh",
- "version": "v0.11.18",
+ "version": "v0.11.19",
"source": {
"type": "git",
"url": "https://github.com/bobthecow/psysh.git",
- "reference": "4f00ee9e236fa6a48f4560d1300b9c961a70a7ec"
+ "reference": "1724ceff278daeeac5a006744633bacbb2dc4706"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/bobthecow/psysh/zipball/4f00ee9e236fa6a48f4560d1300b9c961a70a7ec",
- "reference": "4f00ee9e236fa6a48f4560d1300b9c961a70a7ec",
+ "url": "https://api.github.com/repos/bobthecow/psysh/zipball/1724ceff278daeeac5a006744633bacbb2dc4706",
+ "reference": "1724ceff278daeeac5a006744633bacbb2dc4706",
"shasum": ""
},
"require": {
@@ -8584,9 +8584,9 @@
],
"support": {
"issues": "https://github.com/bobthecow/psysh/issues",
- "source": "https://github.com/bobthecow/psysh/tree/v0.11.18"
+ "source": "https://github.com/bobthecow/psysh/tree/v0.11.19"
},
- "time": "2023-05-23T02:31:11+00:00"
+ "time": "2023-07-15T19:42:19+00:00"
},
{
"name": "pusher/pusher-php-server",
@@ -15188,16 +15188,16 @@
},
{
"name": "friendsofphp/php-cs-fixer",
- "version": "v3.21.1",
+ "version": "v3.22.0",
"source": {
"type": "git",
"url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git",
- "reference": "229b55b3eae4729a8e2a321441ba40fcb3720b86"
+ "reference": "92b019f6c8d79aa26349d0db7671d37440dc0ff3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/229b55b3eae4729a8e2a321441ba40fcb3720b86",
- "reference": "229b55b3eae4729a8e2a321441ba40fcb3720b86",
+ "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/92b019f6c8d79aa26349d0db7671d37440dc0ff3",
+ "reference": "92b019f6c8d79aa26349d0db7671d37440dc0ff3",
"shasum": ""
},
"require": {
@@ -15207,7 +15207,7 @@
"doctrine/lexer": "^2 || ^3",
"ext-json": "*",
"ext-tokenizer": "*",
- "php": "^8.0.1",
+ "php": "^7.4 || ^8.0",
"sebastian/diff": "^4.0 || ^5.0",
"symfony/console": "^5.4 || ^6.0",
"symfony/event-dispatcher": "^5.4 || ^6.0",
@@ -15221,6 +15221,7 @@
"symfony/stopwatch": "^5.4 || ^6.0"
},
"require-dev": {
+ "facile-it/paraunit": "^1.3 || ^2.0",
"justinrainbow/json-schema": "^5.2",
"keradus/cli-executor": "^2.0",
"mikey179/vfsstream": "^1.6.11",
@@ -15272,7 +15273,7 @@
],
"support": {
"issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues",
- "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.21.1"
+ "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.22.0"
},
"funding": [
{
@@ -15280,7 +15281,7 @@
"type": "github"
}
],
- "time": "2023-07-05T21:50:25+00:00"
+ "time": "2023-07-16T23:08:06+00:00"
},
{
"name": "hamcrest/hamcrest-php",
@@ -15460,37 +15461,33 @@
},
{
"name": "mockery/mockery",
- "version": "1.6.2",
+ "version": "1.6.4",
"source": {
"type": "git",
"url": "https://github.com/mockery/mockery.git",
- "reference": "13a7fa2642c76c58fa2806ef7f565344c817a191"
+ "reference": "d1413755e26fe56a63455f7753221c86cbb88f66"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/mockery/mockery/zipball/13a7fa2642c76c58fa2806ef7f565344c817a191",
- "reference": "13a7fa2642c76c58fa2806ef7f565344c817a191",
+ "url": "https://api.github.com/repos/mockery/mockery/zipball/d1413755e26fe56a63455f7753221c86cbb88f66",
+ "reference": "d1413755e26fe56a63455f7753221c86cbb88f66",
"shasum": ""
},
"require": {
"hamcrest/hamcrest-php": "^2.0.1",
"lib-pcre": ">=7.0",
- "php": "^7.4 || ^8.0"
+ "php": ">=7.4,<8.3"
},
"conflict": {
"phpunit/phpunit": "<8.0"
},
"require-dev": {
"phpunit/phpunit": "^8.5 || ^9.3",
- "psalm/plugin-phpunit": "^0.18",
- "vimeo/psalm": "^5.9"
+ "psalm/plugin-phpunit": "^0.18.4",
+ "symplify/easy-coding-standard": "^11.5.0",
+ "vimeo/psalm": "^5.13.1"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.6.x-dev"
- }
- },
"autoload": {
"files": [
"library/helpers.php",
@@ -15508,12 +15505,20 @@
{
"name": "Pádraic Brady",
"email": "padraic.brady@gmail.com",
- "homepage": "http://blog.astrumfutura.com"
+ "homepage": "https://github.com/padraic",
+ "role": "Author"
},
{
"name": "Dave Marshall",
"email": "dave.marshall@atstsolutions.co.uk",
- "homepage": "http://davedevelopment.co.uk"
+ "homepage": "https://davedevelopment.co.uk",
+ "role": "Developer"
+ },
+ {
+ "name": "Nathanael Esayeas",
+ "email": "nathanael.esayeas@protonmail.com",
+ "homepage": "https://github.com/ghostwriter",
+ "role": "Lead Developer"
}
],
"description": "Mockery is a simple yet flexible PHP mock object framework",
@@ -15531,10 +15536,13 @@
"testing"
],
"support": {
+ "docs": "https://docs.mockery.io/",
"issues": "https://github.com/mockery/mockery/issues",
- "source": "https://github.com/mockery/mockery/tree/1.6.2"
+ "rss": "https://github.com/mockery/mockery/releases.atom",
+ "security": "https://github.com/mockery/mockery/security/advisories",
+ "source": "https://github.com/mockery/mockery"
},
- "time": "2023-06-07T09:07:52+00:00"
+ "time": "2023-07-19T15:51:02+00:00"
},
{
"name": "myclabs/deep-copy",
@@ -16140,16 +16148,16 @@
},
{
"name": "phpstan/phpstan",
- "version": "1.10.25",
+ "version": "1.10.26",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan.git",
- "reference": "578f4e70d117f9a90699324c555922800ac38d8c"
+ "reference": "5d660cbb7e1b89253a47147ae44044f49832351f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan/zipball/578f4e70d117f9a90699324c555922800ac38d8c",
- "reference": "578f4e70d117f9a90699324c555922800ac38d8c",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/5d660cbb7e1b89253a47147ae44044f49832351f",
+ "reference": "5d660cbb7e1b89253a47147ae44044f49832351f",
"shasum": ""
},
"require": {
@@ -16198,7 +16206,7 @@
"type": "tidelift"
}
],
- "time": "2023-07-06T12:11:37+00:00"
+ "time": "2023-07-19T12:44:37+00:00"
},
{
"name": "phpunit/php-code-coverage",