diff --git a/app/Http/Controllers/DesignController.php b/app/Http/Controllers/DesignController.php index 677516725b4c..3e97a8c609b1 100644 --- a/app/Http/Controllers/DesignController.php +++ b/app/Http/Controllers/DesignController.php @@ -521,8 +521,11 @@ class DesignController extends BaseController $designs = Design::withTrashed()->company()->whereIn('id', $this->transformKeys($ids)); - $designs->each(function ($design, $key) use ($action) { - if (auth()->user()->can('edit', $design)) { + /** @var \App\Models\User $user */ + $user = auth()->user(); + + $designs->each(function ($design, $key) use ($action, $user) { + if ($user->can('edit', $design)) { $this->design_repo->{$action}($design); } }); @@ -534,7 +537,11 @@ class DesignController extends BaseController { $design_id = $request->input('design_id'); $entity = $request->input('entity'); - $company = auth()->user()->getCompany(); + + /** @var \App\Models\User $user */ + $user = auth()->user(); + + $company = $user->getCompany(); $design = Design::where('company_id', $company->id) ->orWhereNull('company_id') diff --git a/app/Http/Controllers/PreviewController.php b/app/Http/Controllers/PreviewController.php index 00567fcec83f..f3a250734085 100644 --- a/app/Http/Controllers/PreviewController.php +++ b/app/Http/Controllers/PreviewController.php @@ -237,7 +237,7 @@ class PreviewController extends BaseController $html = new HtmlEngine($entity_obj->invitations()->first()); - $design = \App\Models\Design::find($entity_obj->design_id); + $design = \App\Models\Design::withTrashed()->find($entity_obj->design_id); /* Catch all in case migration doesn't pass back a valid design */ if (! $design) { diff --git a/app/Http/Controllers/PreviewPurchaseOrderController.php b/app/Http/Controllers/PreviewPurchaseOrderController.php index 284286733fc0..92d51e56a9f3 100644 --- a/app/Http/Controllers/PreviewPurchaseOrderController.php +++ b/app/Http/Controllers/PreviewPurchaseOrderController.php @@ -196,7 +196,7 @@ class PreviewPurchaseOrderController extends BaseController $html = new VendorHtmlEngine($entity_obj->invitations()->first()); - $design = \App\Models\Design::find($entity_obj->design_id); + $design = \App\Models\Design::withTrashed()->find($entity_obj->design_id); /* Catch all in case migration doesn't pass back a valid design */ if (!$design) { diff --git a/app/Jobs/Entity/CreateEntityPdf.php b/app/Jobs/Entity/CreateEntityPdf.php index 85f342cb8a7c..e559f2a904c3 100644 --- a/app/Jobs/Entity/CreateEntityPdf.php +++ b/app/Jobs/Entity/CreateEntityPdf.php @@ -135,7 +135,7 @@ class CreateEntityPdf implements ShouldQueue $entity_design_id = $this->entity->design_id ? $this->entity->design_id : $this->decodePrimaryKey($this->client->getSetting($entity_design_id)); - $design = Design::find($entity_design_id); + $design = Design::withTrashed()->find($entity_design_id); /* Catch all in case migration doesn't pass back a valid design */ if (! $design) { diff --git a/app/Jobs/Entity/CreateRawPdf.php b/app/Jobs/Entity/CreateRawPdf.php index ebd2704c894f..4231b6595b44 100644 --- a/app/Jobs/Entity/CreateRawPdf.php +++ b/app/Jobs/Entity/CreateRawPdf.php @@ -122,7 +122,7 @@ class CreateRawPdf implements ShouldQueue $entity_design_id = $this->entity->design_id ? $this->entity->design_id : $this->decodePrimaryKey($this->entity->client->getSetting($entity_design_id)); - $design = Design::find($entity_design_id); + $design = Design::withTrashed()->find($entity_design_id); /* Catch all in case migration doesn't pass back a valid design */ if (! $design) { diff --git a/app/Jobs/Vendor/CreatePurchaseOrderPdf.php b/app/Jobs/Vendor/CreatePurchaseOrderPdf.php index 83d62ebd7a49..5961c3c8564e 100644 --- a/app/Jobs/Vendor/CreatePurchaseOrderPdf.php +++ b/app/Jobs/Vendor/CreatePurchaseOrderPdf.php @@ -120,7 +120,7 @@ class CreatePurchaseOrderPdf implements ShouldQueue $entity_design_id = $this->entity->design_id ? $this->entity->design_id : $this->decodePrimaryKey('Wpmbk5ezJn'); - $design = Design::find($entity_design_id); + $design = Design::withTrashed()->find($entity_design_id); /* Catch all in case migration doesn't pass back a valid design */ if (!$design) { diff --git a/app/Repositories/ActivityRepository.php b/app/Repositories/ActivityRepository.php index 91ede279b5fd..3fdb6d402608 100644 --- a/app/Repositories/ActivityRepository.php +++ b/app/Repositories/ActivityRepository.php @@ -128,7 +128,7 @@ class ActivityRepository extends BaseRepository $entity_design_id = $entity->design_id ? $entity->design_id : $this->decodePrimaryKey($entity->client->getSetting($entity_design_id)); - $design = Design::find($entity_design_id); + $design = Design::withTrashed()->find($entity_design_id); if (! $entity->invitations()->exists() || ! $design) { nlog("No invitations for entity {$entity->id} - {$entity->number}"); diff --git a/app/Repositories/DesignRepository.php b/app/Repositories/DesignRepository.php index fb9fb9f73452..661a07d34838 100644 --- a/app/Repositories/DesignRepository.php +++ b/app/Repositories/DesignRepository.php @@ -23,6 +23,40 @@ class DesignRepository extends BaseRepository { $design->name = $design->name.'_deleted_'.Str::random(5); + /** Make sure this design was not a default design - if it is, set the Clean template as the default */ + + /** @var \App\Models\User $user */ + $user = auth()->user(); + + $company = $user->company(); + $settings = $company->settings; + + if ($settings->invoice_design_id == $design->hashed_id) { + $settings->invoice_design_id = 'Wpmbk5ezJn'; + } + + if ($settings->quote_design_id == $design->hashed_id) { + $settings->quote_design_id = 'Wpmbk5ezJn'; + } + + if ($settings->credit_design_id == $design->hashed_id) { + $settings->credit_design_id = 'Wpmbk5ezJn'; + } + + if ($settings->purchase_order_design_id == $design->hashed_id) { + $settings->purchase_order_design_id = 'Wpmbk5ezJn'; + } + + $company->settings = $settings; + $company->save(); + + $company->invoices()->update(['design_id' => $design_id]); + $company->quotes()->update(['design_id' => $design_id]); + $company->credits()->update(['design_id' => $design_id]); + $company->purchase_orders()->update(['design_id' => $design_id]); + $company->recurring_invoices()->update(['design_id' => $design_id]); + + parent::delete($design); return $design; diff --git a/app/Services/Client/Statement.php b/app/Services/Client/Statement.php index 01c7deee6af1..db1fcb0cd899 100644 --- a/app/Services/Client/Statement.php +++ b/app/Services/Client/Statement.php @@ -411,6 +411,6 @@ class Statement $id = (int) $this->client->getSetting('entity_design_id'); } - return Design::find($id); + return Design::withTrashed()->find($id); } } diff --git a/app/Services/Invoice/GenerateDeliveryNote.php b/app/Services/Invoice/GenerateDeliveryNote.php index 2e16dfd551da..5c369a9a5c05 100644 --- a/app/Services/Invoice/GenerateDeliveryNote.php +++ b/app/Services/Invoice/GenerateDeliveryNote.php @@ -66,7 +66,7 @@ class GenerateDeliveryNote return (new Phantom)->generate($this->invoice->invitations->first()); } - $design = Design::find($design_id); + $design = Design::withTrashed()->find($design_id); $html = new HtmlEngine($invitation); if ($design->is_custom) { diff --git a/app/Services/Pdf/PdfConfiguration.php b/app/Services/Pdf/PdfConfiguration.php index 11576763410f..e62c4c8ba920 100644 --- a/app/Services/Pdf/PdfConfiguration.php +++ b/app/Services/Pdf/PdfConfiguration.php @@ -272,7 +272,7 @@ class PdfConfiguration { $design_id = $this->entity->design_id ? : $this->decodePrimaryKey($this->settings_object->getSetting($this->entity_design_id)); - $this->design = Design::find($design_id ?: 2); + $this->design = Design::withTrashed()->find($design_id ?: 2); return $this; } diff --git a/app/Services/Pdf/PdfMock.php b/app/Services/Pdf/PdfMock.php index 24c687be1e67..09da7debdd8a 100644 --- a/app/Services/Pdf/PdfMock.php +++ b/app/Services/Pdf/PdfMock.php @@ -64,7 +64,7 @@ class PdfMock $pdf_config->setPdfVariables(); $pdf_config->setCurrency(Currency::find($this->settings->currency_id)); $pdf_config->setCountry(Country::find($this->settings->country_id ?: 840)); - $pdf_config->design = Design::find($this->decodePrimaryKey($pdf_config->entity_design_id)); + $pdf_config->design = Design::withTrashed()->find($this->decodePrimaryKey($pdf_config->entity_design_id)); $pdf_config->currency_entity = $this->mock->client; $pdf_service->config = $pdf_config; diff --git a/app/Utils/PhantomJS/Phantom.php b/app/Utils/PhantomJS/Phantom.php index 00b3b206b55e..7786c7194b91 100644 --- a/app/Utils/PhantomJS/Phantom.php +++ b/app/Utils/PhantomJS/Phantom.php @@ -190,7 +190,7 @@ class Phantom $design_id = $entity_obj->design_id ? $entity_obj->design_id : $this->decodePrimaryKey($entity_obj->client->getSetting($entity_design_id)); - $design = Design::find($design_id); + $design = Design::withTrashed()->find($design_id); $html = new HtmlEngine($invitation); if ($design->is_custom) {