Refactor pdf generation

This commit is contained in:
David Bomba 2020-10-26 15:06:58 +11:00
parent 651a1a6cbe
commit 8d508bb1f9
15 changed files with 52 additions and 27 deletions

View File

@ -28,7 +28,6 @@ use App\Http\Requests\Invoice\EditInvoiceRequest;
use App\Http\Requests\Invoice\ShowInvoiceRequest; use App\Http\Requests\Invoice\ShowInvoiceRequest;
use App\Http\Requests\Invoice\StoreInvoiceRequest; use App\Http\Requests\Invoice\StoreInvoiceRequest;
use App\Http\Requests\Invoice\UpdateInvoiceRequest; use App\Http\Requests\Invoice\UpdateInvoiceRequest;
use App\Jobs\Invoice\CreateInvoicePdf;
use App\Jobs\Invoice\EmailInvoice; use App\Jobs\Invoice\EmailInvoice;
use App\Jobs\Invoice\StoreInvoice; use App\Jobs\Invoice\StoreInvoice;
use App\Jobs\Invoice\ZipInvoices; use App\Jobs\Invoice\ZipInvoices;

View File

@ -14,7 +14,6 @@ namespace App\Http\Controllers;
use App\Designs\Custom; use App\Designs\Custom;
use App\Designs\Designer; use App\Designs\Designer;
use App\Factory\InvoiceFactory; use App\Factory\InvoiceFactory;
use App\Jobs\Invoice\CreateInvoicePdf;
use App\Jobs\Util\PreviewPdf; use App\Jobs\Util\PreviewPdf;
use App\Models\Client; use App\Models\Client;
use App\Models\ClientContact; use App\Models\ClientContact;

View File

@ -18,16 +18,22 @@ use App\Designs\Modern;
use App\Libraries\MultiDB; use App\Libraries\MultiDB;
use App\Models\ClientContact; use App\Models\ClientContact;
use App\Models\Company; use App\Models\Company;
use App\Models\Credit;
use App\Models\CreditInvitation;
use App\Models\Design; use App\Models\Design;
use App\Models\Entity; use App\Models\Entity;
use App\Models\Invoice;
use App\Models\InvoiceInvitation;
use App\Models\Quote; use App\Models\Quote;
use App\Models\QuoteInvitation;
use App\Models\RecurringInvoiceInvitation;
use App\Services\PdfMaker\Design as PdfDesignModel; use App\Services\PdfMaker\Design as PdfDesignModel;
use App\Services\PdfMaker\Design as PdfMakerDesign; use App\Services\PdfMaker\Design as PdfMakerDesign;
use App\Services\PdfMaker\PdfMaker as PdfMakerService; use App\Services\PdfMaker\PdfMaker as PdfMakerService;
use App\Utils\HtmlEngine; use App\Utils\HtmlEngine;
use App\Utils\PhantomJS\Phantom; use App\Utils\PhantomJS\Phantom;
use App\Utils\Traits\MakesEntityHtml;
use App\Utils\Traits\MakesHash; use App\Utils\Traits\MakesHash;
use App\Utils\Traits\MakesInvoiceHtml;
use App\Utils\Traits\NumberFormatter; use App\Utils\Traits\NumberFormatter;
use App\Utils\Traits\Pdf\PdfMaker; use App\Utils\Traits\Pdf\PdfMaker;
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
@ -41,7 +47,7 @@ use Spatie\Browsershot\Browsershot;
class CreateEntityPdf implements ShouldQueue class CreateEntityPdf implements ShouldQueue
{ {
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels, NumberFormatter, MakesEntityHtml, PdfMaker, MakesHash; use Dispatchable, InteractsWithQueue, Queueable, SerializesModels, NumberFormatter, MakesInvoiceHtml, PdfMaker, MakesHash;
public $entity; public $entity;
@ -53,6 +59,8 @@ class CreateEntityPdf implements ShouldQueue
public $invitation; public $invitation;
public $entity_string = '';
/** /**
* Create a new job instance. * Create a new job instance.
* *
@ -62,12 +70,22 @@ class CreateEntityPdf implements ShouldQueue
{ {
$this->invitation = $invitation; $this->invitation = $invitation;
if($invitation->invoice) if($invitation instanceof InvoiceInvitation){
$this->entity = $invitation->invoice; $this->entity = $invitation->invoice;
elseif($invitation->quote) $this->entity_string = 'invoice';
}
elseif($invitation instanceof QuoteInvitation){
$this->entity = $invitation->quote; $this->entity = $invitation->quote;
elseif($invitation->credit)) $this->entity_string = 'quote';
}
elseif($invitation instanceof CreditInvitation){
$this->entity = $invitation->credit; $this->entity = $invitation->credit;
$this->entity_string = 'credit';
}
elseif($invitation instanceof RecurringInvoiceInvitation){
$this->entity = $invitation->recurring_invoice;
$this->entity_string = 'recurring_invoice';
}
$this->company = $invitation->company; $this->company = $invitation->company;
@ -94,10 +112,12 @@ class CreateEntityPdf implements ShouldQueue
$file_path = $path.$this->entity->number.'.pdf'; $file_path = $path.$this->entity->number.'.pdf';
info($file_path);
$entity_design_id = $this->entity->design_id ? $this->entity->design_id : $this->decodePrimaryKey($this->entity->client->getSetting('invoice_design_id')); $entity_design_id = $this->entity->design_id ? $this->entity->design_id : $this->decodePrimaryKey($this->entity->client->getSetting('invoice_design_id'));
$design = Design::find($entity_design_id); $design = Design::find($entity_design_id);
$html = new HtmlEngine(null, $this->invitation, 'entity'); $html = new HtmlEngine(null, $this->invitation, $this->entity_string);
if ($design->is_custom) { if ($design->is_custom) {
$options = [ $options = [

View File

@ -11,6 +11,7 @@
namespace App\Listeners\Invoice; namespace App\Listeners\Invoice;
use App\Jobs\Entity\CreateEntityPdf;
use App\Jobs\Invoice\CreateInvoicePdf as PdfCreator; use App\Jobs\Invoice\CreateInvoicePdf as PdfCreator;
use App\Libraries\MultiDB; use App\Libraries\MultiDB;
use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Contracts\Queue\ShouldQueue;
@ -38,7 +39,7 @@ class CreateInvoicePdf implements ShouldQueue
MultiDB::setDb($event->company->db); MultiDB::setDb($event->company->db);
$event->invoice->invitations->each(function ($invitation) { $event->invoice->invitations->each(function ($invitation) {
PdfCreator::dispatch($invitation); CreateEntityPdf::dispatch($invitation);
}); });
} }
} }

View File

@ -14,7 +14,7 @@ namespace App\Models;
use App\Events\Credit\CreditWasUpdated; use App\Events\Credit\CreditWasUpdated;
use App\Helpers\Invoice\InvoiceSum; use App\Helpers\Invoice\InvoiceSum;
use App\Helpers\Invoice\InvoiceSumInclusive; use App\Helpers\Invoice\InvoiceSumInclusive;
use App\Jobs\Credit\CreateCreditPdf; use App\Jobs\Entity\CreateEntityPdf;
use App\Models\Filterable; use App\Models\Filterable;
use App\Services\Credit\CreditService; use App\Services\Credit\CreditService;
use App\Services\Ledger\LedgerService; use App\Services\Ledger\LedgerService;
@ -244,10 +244,10 @@ class Credit extends BaseModel
if (! $invitation) { if (! $invitation) {
event(new CreditWasUpdated($this, $this->company, Ninja::eventVars())); event(new CreditWasUpdated($this, $this->company, Ninja::eventVars()));
CreateCreditPdf::dispatchNow($this, $this->company, $this->client->primary_contact()->first()); CreateEntityPdf::dispatchNow($this, $this->company, $this->client->primary_contact()->first());
} else { } else {
event(new CreditWasUpdated($this, $this->company, Ninja::eventVars())); event(new CreditWasUpdated($this, $this->company, Ninja::eventVars()));
CreateCreditPdf::dispatchNow($invitation->credit, $invitation->company, $invitation->contact); CreateEntityPdf::dispatchNow($invitation->credit, $invitation->company, $invitation->contact);
} }
return $storage_path; return $storage_path;

View File

@ -12,7 +12,7 @@
namespace App\Models; namespace App\Models;
use App\Events\Credit\CreditWasUpdated; use App\Events\Credit\CreditWasUpdated;
use App\Jobs\Credit\CreateCreditPdf; use App\Jobs\Entity\CreateEntityPdf;
use App\Models\Invoice; use App\Models\Invoice;
use App\Utils\Ninja; use App\Utils\Ninja;
use App\Utils\Traits\Inviteable; use App\Utils\Traits\Inviteable;
@ -131,7 +131,7 @@ class CreditInvitation extends BaseModel
if (! Storage::exists($this->credit->client->credit_filepath().$this->credit->number.'.pdf')) { if (! Storage::exists($this->credit->client->credit_filepath().$this->credit->number.'.pdf')) {
event(new CreditWasUpdated($this, $this->company, Ninja::eventVars())); event(new CreditWasUpdated($this, $this->company, Ninja::eventVars()));
CreateCreditPdf::dispatchNow($this); CreateEntityPdf::dispatchNow($this);
} }
return $storage_path; return $storage_path;

View File

@ -18,6 +18,7 @@ use App\Helpers\Invoice\InvoiceSum;
use App\Helpers\Invoice\InvoiceSumInclusive; use App\Helpers\Invoice\InvoiceSumInclusive;
use App\Jobs\Client\UpdateClientBalance; use App\Jobs\Client\UpdateClientBalance;
use App\Jobs\Company\UpdateCompanyLedgerWithInvoice; use App\Jobs\Company\UpdateCompanyLedgerWithInvoice;
use App\Jobs\Entity\CreateEntityPdf;
use App\Jobs\Invoice\CreateInvoicePdf; use App\Jobs\Invoice\CreateInvoicePdf;
use App\Models\Backup; use App\Models\Backup;
use App\Models\CompanyLedger; use App\Models\CompanyLedger;
@ -29,8 +30,8 @@ use App\Services\Ledger\LedgerService;
use App\Utils\Ninja; use App\Utils\Ninja;
use App\Utils\Number; use App\Utils\Number;
use App\Utils\Traits\Archivable; use App\Utils\Traits\Archivable;
use App\Utils\Traits\Invoice\ActionsInvoice;
use App\Utils\Traits\InvoiceEmailBuilder; use App\Utils\Traits\InvoiceEmailBuilder;
use App\Utils\Traits\Invoice\ActionsInvoice;
use App\Utils\Traits\MakesDates; use App\Utils\Traits\MakesDates;
use App\Utils\Traits\MakesInvoiceValues; use App\Utils\Traits\MakesInvoiceValues;
use App\Utils\Traits\MakesReminders; use App\Utils\Traits\MakesReminders;
@ -395,7 +396,8 @@ class Invoice extends BaseModel
if (! Storage::exists($this->client->invoice_filepath().$this->number.'.pdf')) { if (! Storage::exists($this->client->invoice_filepath().$this->number.'.pdf')) {
event(new InvoiceWasUpdated($this, $this->company, Ninja::eventVars())); event(new InvoiceWasUpdated($this, $this->company, Ninja::eventVars()));
CreateInvoicePdf::dispatchNow($invitation); //CreateInvoicePdf::dispatchNow($invitation);
CreateEntityPdf::dispatchNow($invitation);
} }
return $storage_path; return $storage_path;

View File

@ -12,6 +12,7 @@
namespace App\Models; namespace App\Models;
use App\Events\Invoice\InvoiceWasUpdated; use App\Events\Invoice\InvoiceWasUpdated;
use App\Jobs\Entity\CreateEntityPdf;
use App\Jobs\Invoice\CreateInvoicePdf; use App\Jobs\Invoice\CreateInvoicePdf;
use App\Models\Invoice; use App\Models\Invoice;
use App\Utils\Ninja; use App\Utils\Ninja;
@ -144,7 +145,7 @@ class InvoiceInvitation extends BaseModel
if (! Storage::exists($this->invoice->client->invoice_filepath().$this->invoice->number.'.pdf')) { if (! Storage::exists($this->invoice->client->invoice_filepath().$this->invoice->number.'.pdf')) {
event(new InvoiceWasUpdated($this->invoice, $this->company, Ninja::eventVars())); event(new InvoiceWasUpdated($this->invoice, $this->company, Ninja::eventVars()));
CreateInvoicePdf::dispatchNow($this); CreateEntityPdf::dispatchNow($this);
} }
return $storage_path; return $storage_path;

View File

@ -14,8 +14,7 @@ namespace App\Models;
use App\Events\Quote\QuoteWasUpdated; use App\Events\Quote\QuoteWasUpdated;
use App\Helpers\Invoice\InvoiceSum; use App\Helpers\Invoice\InvoiceSum;
use App\Helpers\Invoice\InvoiceSumInclusive; use App\Helpers\Invoice\InvoiceSumInclusive;
use App\Jobs\Invoice\CreateInvoicePdf; use App\Jobs\Entity\CreateEntityPdf;
use App\Jobs\Quote\CreateQuotePdf;
use App\Models\Filterable; use App\Models\Filterable;
use App\Services\Quote\QuoteService; use App\Services\Quote\QuoteService;
use App\Utils\Ninja; use App\Utils\Ninja;
@ -206,7 +205,7 @@ class Quote extends BaseModel
event(new QuoteWasUpdated($this, $this->company, Ninja::eventVars())); event(new QuoteWasUpdated($this, $this->company, Ninja::eventVars()));
CreateQuotePdf::dispatchNow($invitation); CreateEntityPdf::dispatchNow($invitation);
return $storage_path; return $storage_path;
} }

View File

@ -12,7 +12,7 @@
namespace App\Models; namespace App\Models;
use App\Events\Quote\QuoteWasUpdated; use App\Events\Quote\QuoteWasUpdated;
use App\Jobs\Quote\CreateQuotePdf; use App\Jobs\Entity\CreateEntityPdf;
use App\Models\Quote; use App\Models\Quote;
use App\Utils\Ninja; use App\Utils\Ninja;
use App\Utils\Traits\Inviteable; use App\Utils\Traits\Inviteable;
@ -135,7 +135,7 @@ class QuoteInvitation extends BaseModel
if (! Storage::exists($this->quote->client->quote_filepath().$this->quote->number.'.pdf')) { if (! Storage::exists($this->quote->client->quote_filepath().$this->quote->number.'.pdf')) {
event(new QuoteWasUpdated($this->quote, $this->company, Ninja::eventVars())); event(new QuoteWasUpdated($this->quote, $this->company, Ninja::eventVars()));
CreateQuotePdf::dispatchNow($this); CreateEntityPdf::dispatchNow($this);
} }
return $storage_path; return $storage_path;

View File

@ -11,7 +11,8 @@
namespace App\Services\Credit; namespace App\Services\Credit;
use App\Jobs\Credit\CreateCreditPdf; use App\Jobs\Credit\CreateEntityPdf;
use App\Jobs\Entity\CreateEntityPdf;
use App\Jobs\Invoice\CreateInvoicePdf; use App\Jobs\Invoice\CreateInvoicePdf;
use App\Models\ClientContact; use App\Models\ClientContact;
use App\Models\Credit; use App\Models\Credit;
@ -45,7 +46,7 @@ class GetCreditPdf extends AbstractService
$file = Storage::disk($disk)->exists($file_path); $file = Storage::disk($disk)->exists($file_path);
if (! $file) { if (! $file) {
$file_path = CreateCreditPdf::dispatchNow($this->credit, $this->credit->company, $this->contact); $file_path = CreateEntityPdf::dispatchNow($this->credit, $this->credit->company, $this->contact);
} }
return Storage::disk($disk)->path($file_path); return Storage::disk($disk)->path($file_path);

View File

@ -19,6 +19,7 @@ use App\Models\Credit;
use App\Models\Invoice; use App\Models\Invoice;
use App\Models\Payment; use App\Models\Payment;
use App\Models\PaymentHash; use App\Models\PaymentHash;
use App\Models\PaymentType;
use App\Services\AbstractService; use App\Services\AbstractService;
use App\Services\Client\ClientService; use App\Services\Client\ClientService;
use App\Services\Payment\PaymentService; use App\Services\Payment\PaymentService;

View File

@ -11,6 +11,7 @@
namespace App\Services\Invoice; namespace App\Services\Invoice;
use App\Jobs\Entity\CreateEntityPdf;
use App\Jobs\Invoice\CreateInvoicePdf; use App\Jobs\Invoice\CreateInvoicePdf;
use App\Models\ClientContact; use App\Models\ClientContact;
use App\Models\Invoice; use App\Models\Invoice;
@ -43,7 +44,7 @@ class GetInvoicePdf extends AbstractService
$file = Storage::disk($disk)->exists($file_path); $file = Storage::disk($disk)->exists($file_path);
if (! $file) { if (! $file) {
$file_path = CreateInvoicePdf::dispatchNow($invitation); $file_path = CreateEntityPdf::dispatchNow($invitation);
} }
return Storage::disk($disk)->path($file_path); return Storage::disk($disk)->path($file_path);

View File

@ -11,6 +11,7 @@
namespace App\Services\Quote; namespace App\Services\Quote;
use App\Jobs\Entity\CreateEntityPdf;
use App\Jobs\Quote\CreateQuotePdf; use App\Jobs\Quote\CreateQuotePdf;
use App\Models\ClientContact; use App\Models\ClientContact;
use App\Models\Quote; use App\Models\Quote;
@ -43,7 +44,7 @@ class GetQuotePdf extends AbstractService
$file = Storage::disk($disk)->exists($file_path); $file = Storage::disk($disk)->exists($file_path);
if (! $file) { if (! $file) {
$file_path = CreateQuotePdf::dispatchNow($invitation); $file_path = CreateEntityPdf::dispatchNow($invitation);
} }
return Storage::disk($disk)->path($file_path); return Storage::disk($disk)->path($file_path);

View File

@ -41,7 +41,7 @@ class HtmlEngine
public $designer; public $designer;
public function __construct($designer, $invitation, $entity_string) public function __construct($designer, $invitation, $entity_string)
{ {info($entity_string);
$this->designer = $designer; $this->designer = $designer;
$this->invitation = $invitation; $this->invitation = $invitation;